/* 
 * 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>
    /// ItemRegistrationConfig &lt;p&gt;This configuration entity defines the item registration process.&lt;/p&gt;
    /// </summary>
    [DataContract]
    public partial class ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig :  IEquatable<ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig>, IValidatableObject
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig" /> class.
        /// </summary>
        [JsonConstructorAttribute]
        protected ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig() { }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig" /> class.
        /// </summary>
        /// <param name="processId">&lt;p&gt;This parameter defines the unique process ID.&lt;/p&gt; (required).</param>
        /// <param name="mainProcess">&lt;p&gt;Defines, whether the process should be treated as a main process or a shared helper process.&lt;br /&gt; This is relevant for context restriction checks, e.g. during barcode processing.&lt;br /&gt; Defaults to true. If false the related process will not be considered as main process.&lt;/p&gt;.</param>
        /// <param name="authorizationConfig">&lt;p&gt;This config defines authorization related processes.&lt;/p&gt;.</param>
        /// <param name="processBarcodeConfig">&lt;p&gt;This configuration defines barcode processes.&lt;/p&gt; (required).</param>
        /// <param name="transactionPreviewContextConfig">&lt;p&gt;This configuration defines the transaction preview.&lt;/p&gt; (required).</param>
        /// <param name="transactionPreviewShowMessage">&lt;p&gt;This parameter defines the configuration for the transaction preview in connection with the function Show Message.&lt;/p&gt; (required).</param>
        /// <param name="subtotalPositionOperationConfig">subtotalPositionOperationConfig (required).</param>
        /// <param name="promptReceiptDataConfig">promptReceiptDataConfig (required).</param>
        /// <param name="payTowerErrorDialog">payTowerErrorDialog (required).</param>
        /// <param name="goodsReturnConfig">&lt;p&gt;This configuration defines the goods return process.&lt;/p&gt; (required).</param>
        /// <param name="emptiesReturnConfig">&lt;p&gt;This configuration defines the empties return process.&lt;/p&gt; (required).</param>
        /// <param name="alternativeTaxConfig">alternativeTaxConfig (required).</param>
        /// <param name="defaultTareConfig">defaultTareConfig (required).</param>
        /// <param name="toggleTareFixConfig">toggleTareFixConfig (required).</param>
        /// <param name="permanentCustomerInformationConfig">&lt;p&gt;This configuration defines the permanent customer information panel.&lt;/p&gt;.</param>
        /// <param name="createLayawayConfig">createLayawayConfig (required).</param>
        /// <param name="rescanConfig">&lt;p&gt;It defines the rescan configuration. &lt;/p&gt; (required).</param>
        /// <param name="discountInfoEnabled">&lt;p&gt;It defines if the discount info should be displayed in transaction preview.&lt;/p&gt; (required).</param>
        /// <param name="itemInfoEnabled">&lt;p&gt;It defines if the item info should be displayed in transaction preview.&lt;/p&gt; (required).</param>
        /// <param name="itemImageEnabled">&lt;p&gt;It defines if the item image should be displayed in transaction preview.&lt;/p&gt; (required).</param>
        /// <param name="iconSalesInfoTextTypeCodes">&lt;p&gt;It defines a list of text type codes that should be displayed as icon sales info.&lt;/p&gt;.</param>
        /// <param name="textSalesInfoTextTypeCodes">&lt;p&gt;It defines a list of text type codes that should be displayed as text sales info.&lt;/p&gt;.</param>
        /// <param name="salesInfoTextLimit">salesInfoTextLimit.</param>
        /// <param name="terminalDisplayLinesConfigId">terminalDisplayLinesConfigId.</param>
        /// <param name="xXCustom08">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom10">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom09">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom07">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom05">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom06">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom11">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom12">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom13">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom14">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom15">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom03">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom02">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom04">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        /// <param name="xXCustom01">&lt;p&gt;Customizable information&lt;/p&gt;.</param>
        public ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig(string processId = default(string), bool? mainProcess = default(bool?), ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig authorizationConfig = default(ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig), ComGkSoftwarePosApiModelConfigProcessActionProcessBarcodeConfig processBarcodeConfig = default(ComGkSoftwarePosApiModelConfigProcessActionProcessBarcodeConfig), ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig transactionPreviewContextConfig = default(ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig), ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig transactionPreviewShowMessage = default(ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig), ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig subtotalPositionOperationConfig = default(ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig), ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig promptReceiptDataConfig = default(ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig), ComGkSoftwarePosApiModelConfigProcessUiMessageDialogConfig payTowerErrorDialog = default(ComGkSoftwarePosApiModelConfigProcessUiMessageDialogConfig), ComGkSoftwarePosApiModelConfigProcessFlowsGoodsReturnConfig goodsReturnConfig = default(ComGkSoftwarePosApiModelConfigProcessFlowsGoodsReturnConfig), ComGkSoftwarePosApiModelConfigProcessFlowsEmptiesReturnConfig emptiesReturnConfig = default(ComGkSoftwarePosApiModelConfigProcessFlowsEmptiesReturnConfig), ComGkSoftwarePosApiModelConfigProcessFlowsAlternativeTaxConfig alternativeTaxConfig = default(ComGkSoftwarePosApiModelConfigProcessFlowsAlternativeTaxConfig), ComGkSoftwarePosApiModelConfigProcessFlowsSetDefaultTareConfig defaultTareConfig = default(ComGkSoftwarePosApiModelConfigProcessFlowsSetDefaultTareConfig), ComGkSoftwarePosApiModelConfigProcessFlowsToggleTareFixConfig toggleTareFixConfig = default(ComGkSoftwarePosApiModelConfigProcessFlowsToggleTareFixConfig), ComGkSoftwarePosApiModelConfigProcessFlowsPermanentCustomerInformationConfig permanentCustomerInformationConfig = default(ComGkSoftwarePosApiModelConfigProcessFlowsPermanentCustomerInformationConfig), ComGkSoftwarePosApiModelConfigProcessFlowsCreateLayawayConfig createLayawayConfig = default(ComGkSoftwarePosApiModelConfigProcessFlowsCreateLayawayConfig), ComGkSoftwarePosApiModelConfigProcessFlowsRescanConfig rescanConfig = default(ComGkSoftwarePosApiModelConfigProcessFlowsRescanConfig), bool? discountInfoEnabled = default(bool?), bool? itemInfoEnabled = default(bool?), bool? itemImageEnabled = default(bool?), List<string> iconSalesInfoTextTypeCodes = default(List<string>), List<string> textSalesInfoTextTypeCodes = default(List<string>), int? salesInfoTextLimit = default(int?), string terminalDisplayLinesConfigId = 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 xXCustom01 = default(string))
        {
            // to ensure "processId" is required (not null)
            if (processId == null)
            {
                throw new InvalidDataException("processId is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.ProcessId = processId;
            }
            // to ensure "processBarcodeConfig" is required (not null)
            if (processBarcodeConfig == null)
            {
                throw new InvalidDataException("processBarcodeConfig is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.ProcessBarcodeConfig = processBarcodeConfig;
            }
            // to ensure "transactionPreviewContextConfig" is required (not null)
            if (transactionPreviewContextConfig == null)
            {
                throw new InvalidDataException("transactionPreviewContextConfig is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.TransactionPreviewContextConfig = transactionPreviewContextConfig;
            }
            // to ensure "transactionPreviewShowMessage" is required (not null)
            if (transactionPreviewShowMessage == null)
            {
                throw new InvalidDataException("transactionPreviewShowMessage is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.TransactionPreviewShowMessage = transactionPreviewShowMessage;
            }
            // to ensure "subtotalPositionOperationConfig" is required (not null)
            if (subtotalPositionOperationConfig == null)
            {
                throw new InvalidDataException("subtotalPositionOperationConfig is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.SubtotalPositionOperationConfig = subtotalPositionOperationConfig;
            }
            // to ensure "promptReceiptDataConfig" is required (not null)
            if (promptReceiptDataConfig == null)
            {
                throw new InvalidDataException("promptReceiptDataConfig is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.PromptReceiptDataConfig = promptReceiptDataConfig;
            }
            // to ensure "payTowerErrorDialog" is required (not null)
            if (payTowerErrorDialog == null)
            {
                throw new InvalidDataException("payTowerErrorDialog is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.PayTowerErrorDialog = payTowerErrorDialog;
            }
            // to ensure "goodsReturnConfig" is required (not null)
            if (goodsReturnConfig == null)
            {
                throw new InvalidDataException("goodsReturnConfig is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.GoodsReturnConfig = goodsReturnConfig;
            }
            // to ensure "emptiesReturnConfig" is required (not null)
            if (emptiesReturnConfig == null)
            {
                throw new InvalidDataException("emptiesReturnConfig is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.EmptiesReturnConfig = emptiesReturnConfig;
            }
            // to ensure "alternativeTaxConfig" is required (not null)
            if (alternativeTaxConfig == null)
            {
                throw new InvalidDataException("alternativeTaxConfig is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.AlternativeTaxConfig = alternativeTaxConfig;
            }
            // to ensure "defaultTareConfig" is required (not null)
            if (defaultTareConfig == null)
            {
                throw new InvalidDataException("defaultTareConfig is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.DefaultTareConfig = defaultTareConfig;
            }
            // to ensure "toggleTareFixConfig" is required (not null)
            if (toggleTareFixConfig == null)
            {
                throw new InvalidDataException("toggleTareFixConfig is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.ToggleTareFixConfig = toggleTareFixConfig;
            }
            // to ensure "createLayawayConfig" is required (not null)
            if (createLayawayConfig == null)
            {
                throw new InvalidDataException("createLayawayConfig is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.CreateLayawayConfig = createLayawayConfig;
            }
            // to ensure "rescanConfig" is required (not null)
            if (rescanConfig == null)
            {
                throw new InvalidDataException("rescanConfig is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.RescanConfig = rescanConfig;
            }
            // to ensure "discountInfoEnabled" is required (not null)
            if (discountInfoEnabled == null)
            {
                throw new InvalidDataException("discountInfoEnabled is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.DiscountInfoEnabled = discountInfoEnabled;
            }
            // to ensure "itemInfoEnabled" is required (not null)
            if (itemInfoEnabled == null)
            {
                throw new InvalidDataException("itemInfoEnabled is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.ItemInfoEnabled = itemInfoEnabled;
            }
            // to ensure "itemImageEnabled" is required (not null)
            if (itemImageEnabled == null)
            {
                throw new InvalidDataException("itemImageEnabled is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig and cannot be null");
            }
            else
            {
                this.ItemImageEnabled = itemImageEnabled;
            }
            this.MainProcess = mainProcess;
            this.AuthorizationConfig = authorizationConfig;
            this.PermanentCustomerInformationConfig = permanentCustomerInformationConfig;
            this.IconSalesInfoTextTypeCodes = iconSalesInfoTextTypeCodes;
            this.TextSalesInfoTextTypeCodes = textSalesInfoTextTypeCodes;
            this.SalesInfoTextLimit = salesInfoTextLimit;
            this.TerminalDisplayLinesConfigId = terminalDisplayLinesConfigId;
            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.XXCustom01 = xXCustom01;
        }
        
        /// <summary>
        /// &lt;p&gt;This parameter defines the unique process ID.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the unique process ID.&lt;/p&gt;</value>
        [DataMember(Name="processId", EmitDefaultValue=false)]
        public string ProcessId { get; set; }

        /// <summary>
        /// &lt;p&gt;Defines, whether the process should be treated as a main process or a shared helper process.&lt;br /&gt; This is relevant for context restriction checks, e.g. during barcode processing.&lt;br /&gt; Defaults to true. If false the related process will not be considered as main process.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Defines, whether the process should be treated as a main process or a shared helper process.&lt;br /&gt; This is relevant for context restriction checks, e.g. during barcode processing.&lt;br /&gt; Defaults to true. If false the related process will not be considered as main process.&lt;/p&gt;</value>
        [DataMember(Name="mainProcess", EmitDefaultValue=false)]
        public bool? MainProcess { get; set; }

        /// <summary>
        /// &lt;p&gt;This config defines authorization related processes.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This config defines authorization related processes.&lt;/p&gt;</value>
        [DataMember(Name="authorizationConfig", EmitDefaultValue=false)]
        public ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig AuthorizationConfig { get; set; }

        /// <summary>
        /// &lt;p&gt;This configuration defines barcode processes.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This configuration defines barcode processes.&lt;/p&gt;</value>
        [DataMember(Name="processBarcodeConfig", EmitDefaultValue=false)]
        public ComGkSoftwarePosApiModelConfigProcessActionProcessBarcodeConfig ProcessBarcodeConfig { get; set; }

        /// <summary>
        /// &lt;p&gt;This configuration defines the transaction preview.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This configuration defines the transaction preview.&lt;/p&gt;</value>
        [DataMember(Name="transactionPreviewContextConfig", EmitDefaultValue=false)]
        public ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig TransactionPreviewContextConfig { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter defines the configuration for the transaction preview in connection with the function Show Message.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the configuration for the transaction preview in connection with the function Show Message.&lt;/p&gt;</value>
        [DataMember(Name="transactionPreviewShowMessage", EmitDefaultValue=false)]
        public ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig TransactionPreviewShowMessage { get; set; }

        /// <summary>
        /// Gets or Sets SubtotalPositionOperationConfig
        /// </summary>
        [DataMember(Name="subtotalPositionOperationConfig", EmitDefaultValue=false)]
        public ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig SubtotalPositionOperationConfig { get; set; }

        /// <summary>
        /// Gets or Sets PromptReceiptDataConfig
        /// </summary>
        [DataMember(Name="promptReceiptDataConfig", EmitDefaultValue=false)]
        public ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig PromptReceiptDataConfig { get; set; }

        /// <summary>
        /// Gets or Sets PayTowerErrorDialog
        /// </summary>
        [DataMember(Name="payTowerErrorDialog", EmitDefaultValue=false)]
        public ComGkSoftwarePosApiModelConfigProcessUiMessageDialogConfig PayTowerErrorDialog { get; set; }

        /// <summary>
        /// &lt;p&gt;This configuration defines the goods return process.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This configuration defines the goods return process.&lt;/p&gt;</value>
        [DataMember(Name="goodsReturnConfig", EmitDefaultValue=false)]
        public ComGkSoftwarePosApiModelConfigProcessFlowsGoodsReturnConfig GoodsReturnConfig { get; set; }

        /// <summary>
        /// &lt;p&gt;This configuration defines the empties return process.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This configuration defines the empties return process.&lt;/p&gt;</value>
        [DataMember(Name="emptiesReturnConfig", EmitDefaultValue=false)]
        public ComGkSoftwarePosApiModelConfigProcessFlowsEmptiesReturnConfig EmptiesReturnConfig { get; set; }

        /// <summary>
        /// Gets or Sets AlternativeTaxConfig
        /// </summary>
        [DataMember(Name="alternativeTaxConfig", EmitDefaultValue=false)]
        public ComGkSoftwarePosApiModelConfigProcessFlowsAlternativeTaxConfig AlternativeTaxConfig { get; set; }

        /// <summary>
        /// Gets or Sets DefaultTareConfig
        /// </summary>
        [DataMember(Name="defaultTareConfig", EmitDefaultValue=false)]
        public ComGkSoftwarePosApiModelConfigProcessFlowsSetDefaultTareConfig DefaultTareConfig { get; set; }

        /// <summary>
        /// Gets or Sets ToggleTareFixConfig
        /// </summary>
        [DataMember(Name="toggleTareFixConfig", EmitDefaultValue=false)]
        public ComGkSoftwarePosApiModelConfigProcessFlowsToggleTareFixConfig ToggleTareFixConfig { get; set; }

        /// <summary>
        /// &lt;p&gt;This configuration defines the permanent customer information panel.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This configuration defines the permanent customer information panel.&lt;/p&gt;</value>
        [DataMember(Name="permanentCustomerInformationConfig", EmitDefaultValue=false)]
        public ComGkSoftwarePosApiModelConfigProcessFlowsPermanentCustomerInformationConfig PermanentCustomerInformationConfig { get; set; }

        /// <summary>
        /// Gets or Sets CreateLayawayConfig
        /// </summary>
        [DataMember(Name="createLayawayConfig", EmitDefaultValue=false)]
        public ComGkSoftwarePosApiModelConfigProcessFlowsCreateLayawayConfig CreateLayawayConfig { get; set; }

        /// <summary>
        /// &lt;p&gt;It defines the rescan configuration. &lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;It defines the rescan configuration. &lt;/p&gt;</value>
        [DataMember(Name="rescanConfig", EmitDefaultValue=false)]
        public ComGkSoftwarePosApiModelConfigProcessFlowsRescanConfig RescanConfig { get; set; }

        /// <summary>
        /// &lt;p&gt;It defines if the discount info should be displayed in transaction preview.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;It defines if the discount info should be displayed in transaction preview.&lt;/p&gt;</value>
        [DataMember(Name="discountInfoEnabled", EmitDefaultValue=false)]
        public bool? DiscountInfoEnabled { get; set; }

        /// <summary>
        /// &lt;p&gt;It defines if the item info should be displayed in transaction preview.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;It defines if the item info should be displayed in transaction preview.&lt;/p&gt;</value>
        [DataMember(Name="itemInfoEnabled", EmitDefaultValue=false)]
        public bool? ItemInfoEnabled { get; set; }

        /// <summary>
        /// &lt;p&gt;It defines if the item image should be displayed in transaction preview.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;It defines if the item image should be displayed in transaction preview.&lt;/p&gt;</value>
        [DataMember(Name="itemImageEnabled", EmitDefaultValue=false)]
        public bool? ItemImageEnabled { get; set; }

        /// <summary>
        /// &lt;p&gt;It defines a list of text type codes that should be displayed as icon sales info.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;It defines a list of text type codes that should be displayed as icon sales info.&lt;/p&gt;</value>
        [DataMember(Name="iconSalesInfoTextTypeCodes", EmitDefaultValue=false)]
        public List<string> IconSalesInfoTextTypeCodes { get; set; }

        /// <summary>
        /// &lt;p&gt;It defines a list of text type codes that should be displayed as text sales info.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;It defines a list of text type codes that should be displayed as text sales info.&lt;/p&gt;</value>
        [DataMember(Name="textSalesInfoTextTypeCodes", EmitDefaultValue=false)]
        public List<string> TextSalesInfoTextTypeCodes { get; set; }

        /// <summary>
        /// Gets or Sets SalesInfoTextLimit
        /// </summary>
        [DataMember(Name="salesInfoTextLimit", EmitDefaultValue=false)]
        public int? SalesInfoTextLimit { get; set; }

        /// <summary>
        /// Gets or Sets TerminalDisplayLinesConfigId
        /// </summary>
        [DataMember(Name="terminalDisplayLinesConfigId", EmitDefaultValue=false)]
        public string TerminalDisplayLinesConfigId { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom08", EmitDefaultValue=false)]
        public string XXCustom08 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom10", EmitDefaultValue=false)]
        public string XXCustom10 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom09", EmitDefaultValue=false)]
        public string XXCustom09 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom07", EmitDefaultValue=false)]
        public string XXCustom07 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom05", EmitDefaultValue=false)]
        public string XXCustom05 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom06", EmitDefaultValue=false)]
        public string XXCustom06 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom11", EmitDefaultValue=false)]
        public string XXCustom11 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom12", EmitDefaultValue=false)]
        public string XXCustom12 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom13", EmitDefaultValue=false)]
        public string XXCustom13 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom14", EmitDefaultValue=false)]
        public string XXCustom14 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom15", EmitDefaultValue=false)]
        public string XXCustom15 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom03", EmitDefaultValue=false)]
        public string XXCustom03 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom02", EmitDefaultValue=false)]
        public string XXCustom02 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        [DataMember(Name="xXCustom04", EmitDefaultValue=false)]
        public string XXCustom04 { get; set; }

        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&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 ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig {\n");
            sb.Append("  ProcessId: ").Append(ProcessId).Append("\n");
            sb.Append("  MainProcess: ").Append(MainProcess).Append("\n");
            sb.Append("  AuthorizationConfig: ").Append(AuthorizationConfig).Append("\n");
            sb.Append("  ProcessBarcodeConfig: ").Append(ProcessBarcodeConfig).Append("\n");
            sb.Append("  TransactionPreviewContextConfig: ").Append(TransactionPreviewContextConfig).Append("\n");
            sb.Append("  TransactionPreviewShowMessage: ").Append(TransactionPreviewShowMessage).Append("\n");
            sb.Append("  SubtotalPositionOperationConfig: ").Append(SubtotalPositionOperationConfig).Append("\n");
            sb.Append("  PromptReceiptDataConfig: ").Append(PromptReceiptDataConfig).Append("\n");
            sb.Append("  PayTowerErrorDialog: ").Append(PayTowerErrorDialog).Append("\n");
            sb.Append("  GoodsReturnConfig: ").Append(GoodsReturnConfig).Append("\n");
            sb.Append("  EmptiesReturnConfig: ").Append(EmptiesReturnConfig).Append("\n");
            sb.Append("  AlternativeTaxConfig: ").Append(AlternativeTaxConfig).Append("\n");
            sb.Append("  DefaultTareConfig: ").Append(DefaultTareConfig).Append("\n");
            sb.Append("  ToggleTareFixConfig: ").Append(ToggleTareFixConfig).Append("\n");
            sb.Append("  PermanentCustomerInformationConfig: ").Append(PermanentCustomerInformationConfig).Append("\n");
            sb.Append("  CreateLayawayConfig: ").Append(CreateLayawayConfig).Append("\n");
            sb.Append("  RescanConfig: ").Append(RescanConfig).Append("\n");
            sb.Append("  DiscountInfoEnabled: ").Append(DiscountInfoEnabled).Append("\n");
            sb.Append("  ItemInfoEnabled: ").Append(ItemInfoEnabled).Append("\n");
            sb.Append("  ItemImageEnabled: ").Append(ItemImageEnabled).Append("\n");
            sb.Append("  IconSalesInfoTextTypeCodes: ").Append(IconSalesInfoTextTypeCodes).Append("\n");
            sb.Append("  TextSalesInfoTextTypeCodes: ").Append(TextSalesInfoTextTypeCodes).Append("\n");
            sb.Append("  SalesInfoTextLimit: ").Append(SalesInfoTextLimit).Append("\n");
            sb.Append("  TerminalDisplayLinesConfigId: ").Append(TerminalDisplayLinesConfigId).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("  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 ComGkSoftwarePosApiModelConfigProcessFlowsItemRegistrationConfig);
        }

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

            return 
                (
                    this.ProcessId == input.ProcessId ||
                    (this.ProcessId != null &&
                    this.ProcessId.Equals(input.ProcessId))
                ) && 
                (
                    this.MainProcess == input.MainProcess ||
                    (this.MainProcess != null &&
                    this.MainProcess.Equals(input.MainProcess))
                ) && 
                (
                    this.AuthorizationConfig == input.AuthorizationConfig ||
                    (this.AuthorizationConfig != null &&
                    this.AuthorizationConfig.Equals(input.AuthorizationConfig))
                ) && 
                (
                    this.ProcessBarcodeConfig == input.ProcessBarcodeConfig ||
                    (this.ProcessBarcodeConfig != null &&
                    this.ProcessBarcodeConfig.Equals(input.ProcessBarcodeConfig))
                ) && 
                (
                    this.TransactionPreviewContextConfig == input.TransactionPreviewContextConfig ||
                    (this.TransactionPreviewContextConfig != null &&
                    this.TransactionPreviewContextConfig.Equals(input.TransactionPreviewContextConfig))
                ) && 
                (
                    this.TransactionPreviewShowMessage == input.TransactionPreviewShowMessage ||
                    (this.TransactionPreviewShowMessage != null &&
                    this.TransactionPreviewShowMessage.Equals(input.TransactionPreviewShowMessage))
                ) && 
                (
                    this.SubtotalPositionOperationConfig == input.SubtotalPositionOperationConfig ||
                    (this.SubtotalPositionOperationConfig != null &&
                    this.SubtotalPositionOperationConfig.Equals(input.SubtotalPositionOperationConfig))
                ) && 
                (
                    this.PromptReceiptDataConfig == input.PromptReceiptDataConfig ||
                    (this.PromptReceiptDataConfig != null &&
                    this.PromptReceiptDataConfig.Equals(input.PromptReceiptDataConfig))
                ) && 
                (
                    this.PayTowerErrorDialog == input.PayTowerErrorDialog ||
                    (this.PayTowerErrorDialog != null &&
                    this.PayTowerErrorDialog.Equals(input.PayTowerErrorDialog))
                ) && 
                (
                    this.GoodsReturnConfig == input.GoodsReturnConfig ||
                    (this.GoodsReturnConfig != null &&
                    this.GoodsReturnConfig.Equals(input.GoodsReturnConfig))
                ) && 
                (
                    this.EmptiesReturnConfig == input.EmptiesReturnConfig ||
                    (this.EmptiesReturnConfig != null &&
                    this.EmptiesReturnConfig.Equals(input.EmptiesReturnConfig))
                ) && 
                (
                    this.AlternativeTaxConfig == input.AlternativeTaxConfig ||
                    (this.AlternativeTaxConfig != null &&
                    this.AlternativeTaxConfig.Equals(input.AlternativeTaxConfig))
                ) && 
                (
                    this.DefaultTareConfig == input.DefaultTareConfig ||
                    (this.DefaultTareConfig != null &&
                    this.DefaultTareConfig.Equals(input.DefaultTareConfig))
                ) && 
                (
                    this.ToggleTareFixConfig == input.ToggleTareFixConfig ||
                    (this.ToggleTareFixConfig != null &&
                    this.ToggleTareFixConfig.Equals(input.ToggleTareFixConfig))
                ) && 
                (
                    this.PermanentCustomerInformationConfig == input.PermanentCustomerInformationConfig ||
                    (this.PermanentCustomerInformationConfig != null &&
                    this.PermanentCustomerInformationConfig.Equals(input.PermanentCustomerInformationConfig))
                ) && 
                (
                    this.CreateLayawayConfig == input.CreateLayawayConfig ||
                    (this.CreateLayawayConfig != null &&
                    this.CreateLayawayConfig.Equals(input.CreateLayawayConfig))
                ) && 
                (
                    this.RescanConfig == input.RescanConfig ||
                    (this.RescanConfig != null &&
                    this.RescanConfig.Equals(input.RescanConfig))
                ) && 
                (
                    this.DiscountInfoEnabled == input.DiscountInfoEnabled ||
                    (this.DiscountInfoEnabled != null &&
                    this.DiscountInfoEnabled.Equals(input.DiscountInfoEnabled))
                ) && 
                (
                    this.ItemInfoEnabled == input.ItemInfoEnabled ||
                    (this.ItemInfoEnabled != null &&
                    this.ItemInfoEnabled.Equals(input.ItemInfoEnabled))
                ) && 
                (
                    this.ItemImageEnabled == input.ItemImageEnabled ||
                    (this.ItemImageEnabled != null &&
                    this.ItemImageEnabled.Equals(input.ItemImageEnabled))
                ) && 
                (
                    this.IconSalesInfoTextTypeCodes == input.IconSalesInfoTextTypeCodes ||
                    this.IconSalesInfoTextTypeCodes != null &&
                    this.IconSalesInfoTextTypeCodes.SequenceEqual(input.IconSalesInfoTextTypeCodes)
                ) && 
                (
                    this.TextSalesInfoTextTypeCodes == input.TextSalesInfoTextTypeCodes ||
                    this.TextSalesInfoTextTypeCodes != null &&
                    this.TextSalesInfoTextTypeCodes.SequenceEqual(input.TextSalesInfoTextTypeCodes)
                ) && 
                (
                    this.SalesInfoTextLimit == input.SalesInfoTextLimit ||
                    (this.SalesInfoTextLimit != null &&
                    this.SalesInfoTextLimit.Equals(input.SalesInfoTextLimit))
                ) && 
                (
                    this.TerminalDisplayLinesConfigId == input.TerminalDisplayLinesConfigId ||
                    (this.TerminalDisplayLinesConfigId != null &&
                    this.TerminalDisplayLinesConfigId.Equals(input.TerminalDisplayLinesConfigId))
                ) && 
                (
                    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.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.ProcessId != null)
                    hashCode = hashCode * 59 + this.ProcessId.GetHashCode();
                if (this.MainProcess != null)
                    hashCode = hashCode * 59 + this.MainProcess.GetHashCode();
                if (this.AuthorizationConfig != null)
                    hashCode = hashCode * 59 + this.AuthorizationConfig.GetHashCode();
                if (this.ProcessBarcodeConfig != null)
                    hashCode = hashCode * 59 + this.ProcessBarcodeConfig.GetHashCode();
                if (this.TransactionPreviewContextConfig != null)
                    hashCode = hashCode * 59 + this.TransactionPreviewContextConfig.GetHashCode();
                if (this.TransactionPreviewShowMessage != null)
                    hashCode = hashCode * 59 + this.TransactionPreviewShowMessage.GetHashCode();
                if (this.SubtotalPositionOperationConfig != null)
                    hashCode = hashCode * 59 + this.SubtotalPositionOperationConfig.GetHashCode();
                if (this.PromptReceiptDataConfig != null)
                    hashCode = hashCode * 59 + this.PromptReceiptDataConfig.GetHashCode();
                if (this.PayTowerErrorDialog != null)
                    hashCode = hashCode * 59 + this.PayTowerErrorDialog.GetHashCode();
                if (this.GoodsReturnConfig != null)
                    hashCode = hashCode * 59 + this.GoodsReturnConfig.GetHashCode();
                if (this.EmptiesReturnConfig != null)
                    hashCode = hashCode * 59 + this.EmptiesReturnConfig.GetHashCode();
                if (this.AlternativeTaxConfig != null)
                    hashCode = hashCode * 59 + this.AlternativeTaxConfig.GetHashCode();
                if (this.DefaultTareConfig != null)
                    hashCode = hashCode * 59 + this.DefaultTareConfig.GetHashCode();
                if (this.ToggleTareFixConfig != null)
                    hashCode = hashCode * 59 + this.ToggleTareFixConfig.GetHashCode();
                if (this.PermanentCustomerInformationConfig != null)
                    hashCode = hashCode * 59 + this.PermanentCustomerInformationConfig.GetHashCode();
                if (this.CreateLayawayConfig != null)
                    hashCode = hashCode * 59 + this.CreateLayawayConfig.GetHashCode();
                if (this.RescanConfig != null)
                    hashCode = hashCode * 59 + this.RescanConfig.GetHashCode();
                if (this.DiscountInfoEnabled != null)
                    hashCode = hashCode * 59 + this.DiscountInfoEnabled.GetHashCode();
                if (this.ItemInfoEnabled != null)
                    hashCode = hashCode * 59 + this.ItemInfoEnabled.GetHashCode();
                if (this.ItemImageEnabled != null)
                    hashCode = hashCode * 59 + this.ItemImageEnabled.GetHashCode();
                if (this.IconSalesInfoTextTypeCodes != null)
                    hashCode = hashCode * 59 + this.IconSalesInfoTextTypeCodes.GetHashCode();
                if (this.TextSalesInfoTextTypeCodes != null)
                    hashCode = hashCode * 59 + this.TextSalesInfoTextTypeCodes.GetHashCode();
                if (this.SalesInfoTextLimit != null)
                    hashCode = hashCode * 59 + this.SalesInfoTextLimit.GetHashCode();
                if (this.TerminalDisplayLinesConfigId != null)
                    hashCode = hashCode * 59 + this.TerminalDisplayLinesConfigId.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.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;
        }
    }

}
