/* 
 * 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>
    /// AuthorizationConfig &lt;p&gt;This configuration entity defines authorization related topics.&lt;/p&gt;
    /// </summary>
    [DataContract]
    public partial class ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig :  IEquatable<ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig>, IValidatableObject
    {
        /// <summary>
        /// &lt;p&gt;This parameter defines the mode of authorization.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: AuthorizationMode [SINGLE, FOUREYES]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Single as &#39;SINGLE&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;FourEyes as &#39;FOUR_EYES&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the mode of authorization.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: AuthorizationMode [SINGLE, FOUREYES]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Single as &#39;SINGLE&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;FourEyes as &#39;FOUR_EYES&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum AuthorizationModeEnum
        {
            
            /// <summary>
            /// Enum Single for value: Single
            /// </summary>
            [EnumMember(Value = "Single")]
            Single = 1,
            
            /// <summary>
            /// Enum FourEyes for value: FourEyes
            /// </summary>
            [EnumMember(Value = "FourEyes")]
            FourEyes = 2
        }

        /// <summary>
        /// &lt;p&gt;This parameter defines the mode of authorization.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: AuthorizationMode [SINGLE, FOUREYES]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Single as &#39;SINGLE&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;FourEyes as &#39;FOUR_EYES&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the mode of authorization.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: AuthorizationMode [SINGLE, FOUREYES]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Single as &#39;SINGLE&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;FourEyes as &#39;FOUR_EYES&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="authorizationMode", EmitDefaultValue=false)]
        public AuthorizationModeEnum AuthorizationMode { get; set; }
        /// <summary>
        /// &lt;p&gt;This parameter specifies the dialog type.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: AuthorizationDialogType [MANUAL, SCAN]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Manual as &#39;INPUT_FIELD&#39;: This setting allows both, manual input and authorization by barcode/msr scanner.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Scan as &#39;SCAN_EXPECT&#39;: Only the authorization by barcode/msr scanner is allowed (no manual input is possible).&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies the dialog type.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: AuthorizationDialogType [MANUAL, SCAN]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Manual as &#39;INPUT_FIELD&#39;: This setting allows both, manual input and authorization by barcode/msr scanner.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Scan as &#39;SCAN_EXPECT&#39;: Only the authorization by barcode/msr scanner is allowed (no manual input is possible).&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum DialogTypeEnum
        {
            
            /// <summary>
            /// Enum Manual for value: Manual
            /// </summary>
            [EnumMember(Value = "Manual")]
            Manual = 1,
            
            /// <summary>
            /// Enum Scan for value: Scan
            /// </summary>
            [EnumMember(Value = "Scan")]
            Scan = 2
        }

        /// <summary>
        /// &lt;p&gt;This parameter specifies the dialog type.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: AuthorizationDialogType [MANUAL, SCAN]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Manual as &#39;INPUT_FIELD&#39;: This setting allows both, manual input and authorization by barcode/msr scanner.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Scan as &#39;SCAN_EXPECT&#39;: Only the authorization by barcode/msr scanner is allowed (no manual input is possible).&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies the dialog type.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: AuthorizationDialogType [MANUAL, SCAN]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Manual as &#39;INPUT_FIELD&#39;: This setting allows both, manual input and authorization by barcode/msr scanner.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Scan as &#39;SCAN_EXPECT&#39;: Only the authorization by barcode/msr scanner is allowed (no manual input is possible).&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="dialogType", EmitDefaultValue=false)]
        public DialogTypeEnum DialogType { get; set; }
        /// <summary>
        /// &lt;p&gt;This parameter defines pos group operator selection action.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines pos group operator selection action.&lt;/p&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum OperatorSelectionActionEnum
        {
            
            /// <summary>
            /// Enum ALWAYS for value: ASK_ALWAYS
            /// </summary>
            [EnumMember(Value = "ASK_ALWAYS")]
            ALWAYS = 1,
            
            /// <summary>
            /// Enum IFNOTAVAILABLE for value: ASK_IF_NOT_AVAILABLE
            /// </summary>
            [EnumMember(Value = "ASK_IF_NOT_AVAILABLE")]
            IFNOTAVAILABLE = 2,
            
            /// <summary>
            /// Enum NEVER for value: ASK_NEVER
            /// </summary>
            [EnumMember(Value = "ASK_NEVER")]
            NEVER = 3
        }

        /// <summary>
        /// &lt;p&gt;This parameter defines pos group operator selection action.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines pos group operator selection action.&lt;/p&gt;</value>
        [DataMember(Name="operatorSelectionAction", EmitDefaultValue=false)]
        public OperatorSelectionActionEnum? OperatorSelectionAction { get; set; }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig" /> class.
        /// </summary>
        [JsonConstructorAttribute]
        protected ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig() { }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig" /> class.
        /// </summary>
        /// <param name="authorizationRequired">&lt;p&gt;This parameter indicates whether an explicit authorization is needed or not.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="requiredRight">&lt;p&gt;If the parameter authorizationRequired is enabled the operator permissions are checked against this right.&lt;/p&gt; (required).</param>
        /// <param name="authorizationMode">&lt;p&gt;This parameter defines the mode of authorization.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: AuthorizationMode [SINGLE, FOUREYES]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Single as &#39;SINGLE&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;FourEyes as &#39;FOUR_EYES&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="cancellationAllowed">&lt;p&gt;This parameter specifies whether a cancellation is allowed. If it is set to true the authorization is allowed to be cancelled.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="passwordRequired">&lt;p&gt;This parameter specifies whether the password is required to pass the authorization.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="dialogType">&lt;p&gt;This parameter specifies the dialog type.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: AuthorizationDialogType [MANUAL, SCAN]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Manual as &#39;INPUT_FIELD&#39;: This setting allows both, manual input and authorization by barcode/msr scanner.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Scan as &#39;SCAN_EXPECT&#39;: Only the authorization by barcode/msr scanner is allowed (no manual input is possible).&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="checkSecondUserRights">&lt;p&gt;This parameter is only relevant for the four eyes authorization.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;true - The second user must have rights to run the process.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;false - The authorization succeeds if any of the users has rights to start process.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;.</param>
        /// <param name="loginName">&lt;p&gt;This parameter specifies the predefined login name.&lt;/p&gt;.</param>
        /// <param name="authorizingProcessNameKey">&lt;p&gt;This parameter defines the translation key for the name of the authorizing process.&lt;/p&gt;.</param>
        /// <param name="authorizingReasonText">&lt;p&gt;Prepared reason text of the authorizing process.&lt;/p&gt;.</param>
        /// <param name="authorizingReasonTextKey">&lt;p&gt;Translation key for the reason text of the authorizing process.&lt;/p&gt;.</param>
        /// <param name="authorizingReasonTextParameters">&lt;p&gt;Placeholder parameters for the reason text of the authorizing process.&lt;/p&gt;.</param>
        /// <param name="askIfAlreadyAuthorized">&lt;p&gt;True - Regardless of whether an authorization has already been done in the current receipt,&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;    the authorization shall be carried out.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;False: Is already noted a sufficient authorization, then this is used.&lt;/p&gt; (required).</param>
        /// <param name="lineItemRelevant">&lt;p&gt;True - resourceId will be stored to line Item.&lt;/p&gt; (required).</param>
        /// <param name="retailTransactionRelevant">&lt;p&gt;False - resourceId will be not stored in RetailTransaction.&lt;/p&gt; (required).</param>
        /// <param name="controlTransactionRelevant">&lt;p&gt;False - resourceId will be not stored in ControlTransaction.&lt;/p&gt; (required).</param>
        /// <param name="tenderControlTransactionRelevant">&lt;p&gt;False - resourceId will be not stored in TenderControlTransaction.&lt;/p&gt; (required).</param>
        /// <param name="activeOperatorRequired">&lt;p&gt;True: Error if no POS Group operator is active. Null/False: No activate POS Group operator check.&lt;/p&gt;.</param>
        /// <param name="operatorSelectionAction">&lt;p&gt;This parameter defines pos group operator selection action.&lt;/p&gt;.</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 ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig(bool? authorizationRequired = default(bool?), string requiredRight = default(string), AuthorizationModeEnum authorizationMode = default(AuthorizationModeEnum), bool? cancellationAllowed = default(bool?), bool? passwordRequired = default(bool?), DialogTypeEnum dialogType = default(DialogTypeEnum), bool? checkSecondUserRights = default(bool?), string loginName = default(string), string authorizingProcessNameKey = default(string), string authorizingReasonText = default(string), string authorizingReasonTextKey = default(string), List<string> authorizingReasonTextParameters = default(List<string>), bool? askIfAlreadyAuthorized = default(bool?), bool? lineItemRelevant = default(bool?), bool? retailTransactionRelevant = default(bool?), bool? controlTransactionRelevant = default(bool?), bool? tenderControlTransactionRelevant = default(bool?), bool? activeOperatorRequired = default(bool?), OperatorSelectionActionEnum? operatorSelectionAction = default(OperatorSelectionActionEnum?), 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 "authorizationRequired" is required (not null)
            if (authorizationRequired == null)
            {
                throw new InvalidDataException("authorizationRequired is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig and cannot be null");
            }
            else
            {
                this.AuthorizationRequired = authorizationRequired;
            }
            // to ensure "requiredRight" is required (not null)
            if (requiredRight == null)
            {
                throw new InvalidDataException("requiredRight is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig and cannot be null");
            }
            else
            {
                this.RequiredRight = requiredRight;
            }
            // to ensure "authorizationMode" is required (not null)
            if (authorizationMode == null)
            {
                throw new InvalidDataException("authorizationMode is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig and cannot be null");
            }
            else
            {
                this.AuthorizationMode = authorizationMode;
            }
            // to ensure "cancellationAllowed" is required (not null)
            if (cancellationAllowed == null)
            {
                throw new InvalidDataException("cancellationAllowed is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig and cannot be null");
            }
            else
            {
                this.CancellationAllowed = cancellationAllowed;
            }
            // to ensure "passwordRequired" is required (not null)
            if (passwordRequired == null)
            {
                throw new InvalidDataException("passwordRequired is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig and cannot be null");
            }
            else
            {
                this.PasswordRequired = passwordRequired;
            }
            // to ensure "dialogType" is required (not null)
            if (dialogType == null)
            {
                throw new InvalidDataException("dialogType is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig and cannot be null");
            }
            else
            {
                this.DialogType = dialogType;
            }
            // to ensure "askIfAlreadyAuthorized" is required (not null)
            if (askIfAlreadyAuthorized == null)
            {
                throw new InvalidDataException("askIfAlreadyAuthorized is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig and cannot be null");
            }
            else
            {
                this.AskIfAlreadyAuthorized = askIfAlreadyAuthorized;
            }
            // to ensure "lineItemRelevant" is required (not null)
            if (lineItemRelevant == null)
            {
                throw new InvalidDataException("lineItemRelevant is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig and cannot be null");
            }
            else
            {
                this.LineItemRelevant = lineItemRelevant;
            }
            // to ensure "retailTransactionRelevant" is required (not null)
            if (retailTransactionRelevant == null)
            {
                throw new InvalidDataException("retailTransactionRelevant is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig and cannot be null");
            }
            else
            {
                this.RetailTransactionRelevant = retailTransactionRelevant;
            }
            // to ensure "controlTransactionRelevant" is required (not null)
            if (controlTransactionRelevant == null)
            {
                throw new InvalidDataException("controlTransactionRelevant is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig and cannot be null");
            }
            else
            {
                this.ControlTransactionRelevant = controlTransactionRelevant;
            }
            // to ensure "tenderControlTransactionRelevant" is required (not null)
            if (tenderControlTransactionRelevant == null)
            {
                throw new InvalidDataException("tenderControlTransactionRelevant is a required property for ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig and cannot be null");
            }
            else
            {
                this.TenderControlTransactionRelevant = tenderControlTransactionRelevant;
            }
            this.CheckSecondUserRights = checkSecondUserRights;
            this.LoginName = loginName;
            this.AuthorizingProcessNameKey = authorizingProcessNameKey;
            this.AuthorizingReasonText = authorizingReasonText;
            this.AuthorizingReasonTextKey = authorizingReasonTextKey;
            this.AuthorizingReasonTextParameters = authorizingReasonTextParameters;
            this.ActiveOperatorRequired = activeOperatorRequired;
            this.OperatorSelectionAction = operatorSelectionAction;
            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 indicates whether an explicit authorization is needed or not.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter indicates whether an explicit authorization is needed or not.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="authorizationRequired", EmitDefaultValue=false)]
        public bool? AuthorizationRequired { get; set; }

        /// <summary>
        /// &lt;p&gt;If the parameter authorizationRequired is enabled the operator permissions are checked against this right.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;If the parameter authorizationRequired is enabled the operator permissions are checked against this right.&lt;/p&gt;</value>
        [DataMember(Name="requiredRight", EmitDefaultValue=false)]
        public string RequiredRight { get; set; }


        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a cancellation is allowed. If it is set to true the authorization is allowed to be cancelled.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies whether a cancellation is allowed. If it is set to true the authorization is allowed to be cancelled.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="cancellationAllowed", EmitDefaultValue=false)]
        public bool? CancellationAllowed { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether the password is required to pass the authorization.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies whether the password is required to pass the authorization.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="passwordRequired", EmitDefaultValue=false)]
        public bool? PasswordRequired { get; set; }


        /// <summary>
        /// &lt;p&gt;This parameter is only relevant for the four eyes authorization.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;true - The second user must have rights to run the process.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;false - The authorization succeeds if any of the users has rights to start process.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter is only relevant for the four eyes authorization.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;true - The second user must have rights to run the process.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;false - The authorization succeeds if any of the users has rights to start process.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="checkSecondUserRights", EmitDefaultValue=false)]
        public bool? CheckSecondUserRights { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies the predefined login name.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies the predefined login name.&lt;/p&gt;</value>
        [DataMember(Name="loginName", EmitDefaultValue=false)]
        public string LoginName { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter defines the translation key for the name of the authorizing process.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the translation key for the name of the authorizing process.&lt;/p&gt;</value>
        [DataMember(Name="authorizingProcessNameKey", EmitDefaultValue=false)]
        public string AuthorizingProcessNameKey { get; set; }

        /// <summary>
        /// &lt;p&gt;Prepared reason text of the authorizing process.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Prepared reason text of the authorizing process.&lt;/p&gt;</value>
        [DataMember(Name="authorizingReasonText", EmitDefaultValue=false)]
        public string AuthorizingReasonText { get; set; }

        /// <summary>
        /// &lt;p&gt;Translation key for the reason text of the authorizing process.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Translation key for the reason text of the authorizing process.&lt;/p&gt;</value>
        [DataMember(Name="authorizingReasonTextKey", EmitDefaultValue=false)]
        public string AuthorizingReasonTextKey { get; set; }

        /// <summary>
        /// &lt;p&gt;Placeholder parameters for the reason text of the authorizing process.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Placeholder parameters for the reason text of the authorizing process.&lt;/p&gt;</value>
        [DataMember(Name="authorizingReasonTextParameters", EmitDefaultValue=false)]
        public List<string> AuthorizingReasonTextParameters { get; set; }

        /// <summary>
        /// &lt;p&gt;True - Regardless of whether an authorization has already been done in the current receipt,&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;    the authorization shall be carried out.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;False: Is already noted a sufficient authorization, then this is used.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;True - Regardless of whether an authorization has already been done in the current receipt,&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;    the authorization shall be carried out.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;False: Is already noted a sufficient authorization, then this is used.&lt;/p&gt;</value>
        [DataMember(Name="askIfAlreadyAuthorized", EmitDefaultValue=false)]
        public bool? AskIfAlreadyAuthorized { get; set; }

        /// <summary>
        /// &lt;p&gt;True - resourceId will be stored to line Item.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;True - resourceId will be stored to line Item.&lt;/p&gt;</value>
        [DataMember(Name="lineItemRelevant", EmitDefaultValue=false)]
        public bool? LineItemRelevant { get; set; }

        /// <summary>
        /// &lt;p&gt;False - resourceId will be not stored in RetailTransaction.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;False - resourceId will be not stored in RetailTransaction.&lt;/p&gt;</value>
        [DataMember(Name="retailTransactionRelevant", EmitDefaultValue=false)]
        public bool? RetailTransactionRelevant { get; set; }

        /// <summary>
        /// &lt;p&gt;False - resourceId will be not stored in ControlTransaction.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;False - resourceId will be not stored in ControlTransaction.&lt;/p&gt;</value>
        [DataMember(Name="controlTransactionRelevant", EmitDefaultValue=false)]
        public bool? ControlTransactionRelevant { get; set; }

        /// <summary>
        /// &lt;p&gt;False - resourceId will be not stored in TenderControlTransaction.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;False - resourceId will be not stored in TenderControlTransaction.&lt;/p&gt;</value>
        [DataMember(Name="tenderControlTransactionRelevant", EmitDefaultValue=false)]
        public bool? TenderControlTransactionRelevant { get; set; }

        /// <summary>
        /// &lt;p&gt;True: Error if no POS Group operator is active. Null/False: No activate POS Group operator check.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;True: Error if no POS Group operator is active. Null/False: No activate POS Group operator check.&lt;/p&gt;</value>
        [DataMember(Name="activeOperatorRequired", EmitDefaultValue=false)]
        public bool? ActiveOperatorRequired { 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 ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig {\n");
            sb.Append("  AuthorizationRequired: ").Append(AuthorizationRequired).Append("\n");
            sb.Append("  RequiredRight: ").Append(RequiredRight).Append("\n");
            sb.Append("  AuthorizationMode: ").Append(AuthorizationMode).Append("\n");
            sb.Append("  CancellationAllowed: ").Append(CancellationAllowed).Append("\n");
            sb.Append("  PasswordRequired: ").Append(PasswordRequired).Append("\n");
            sb.Append("  DialogType: ").Append(DialogType).Append("\n");
            sb.Append("  CheckSecondUserRights: ").Append(CheckSecondUserRights).Append("\n");
            sb.Append("  LoginName: ").Append(LoginName).Append("\n");
            sb.Append("  AuthorizingProcessNameKey: ").Append(AuthorizingProcessNameKey).Append("\n");
            sb.Append("  AuthorizingReasonText: ").Append(AuthorizingReasonText).Append("\n");
            sb.Append("  AuthorizingReasonTextKey: ").Append(AuthorizingReasonTextKey).Append("\n");
            sb.Append("  AuthorizingReasonTextParameters: ").Append(AuthorizingReasonTextParameters).Append("\n");
            sb.Append("  AskIfAlreadyAuthorized: ").Append(AskIfAlreadyAuthorized).Append("\n");
            sb.Append("  LineItemRelevant: ").Append(LineItemRelevant).Append("\n");
            sb.Append("  RetailTransactionRelevant: ").Append(RetailTransactionRelevant).Append("\n");
            sb.Append("  ControlTransactionRelevant: ").Append(ControlTransactionRelevant).Append("\n");
            sb.Append("  TenderControlTransactionRelevant: ").Append(TenderControlTransactionRelevant).Append("\n");
            sb.Append("  ActiveOperatorRequired: ").Append(ActiveOperatorRequired).Append("\n");
            sb.Append("  OperatorSelectionAction: ").Append(OperatorSelectionAction).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 ComGkSoftwarePosApiModelConfigProcessFlowsAuthorizationConfig);
        }

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

            return 
                (
                    this.AuthorizationRequired == input.AuthorizationRequired ||
                    (this.AuthorizationRequired != null &&
                    this.AuthorizationRequired.Equals(input.AuthorizationRequired))
                ) && 
                (
                    this.RequiredRight == input.RequiredRight ||
                    (this.RequiredRight != null &&
                    this.RequiredRight.Equals(input.RequiredRight))
                ) && 
                (
                    this.AuthorizationMode == input.AuthorizationMode ||
                    (this.AuthorizationMode != null &&
                    this.AuthorizationMode.Equals(input.AuthorizationMode))
                ) && 
                (
                    this.CancellationAllowed == input.CancellationAllowed ||
                    (this.CancellationAllowed != null &&
                    this.CancellationAllowed.Equals(input.CancellationAllowed))
                ) && 
                (
                    this.PasswordRequired == input.PasswordRequired ||
                    (this.PasswordRequired != null &&
                    this.PasswordRequired.Equals(input.PasswordRequired))
                ) && 
                (
                    this.DialogType == input.DialogType ||
                    (this.DialogType != null &&
                    this.DialogType.Equals(input.DialogType))
                ) && 
                (
                    this.CheckSecondUserRights == input.CheckSecondUserRights ||
                    (this.CheckSecondUserRights != null &&
                    this.CheckSecondUserRights.Equals(input.CheckSecondUserRights))
                ) && 
                (
                    this.LoginName == input.LoginName ||
                    (this.LoginName != null &&
                    this.LoginName.Equals(input.LoginName))
                ) && 
                (
                    this.AuthorizingProcessNameKey == input.AuthorizingProcessNameKey ||
                    (this.AuthorizingProcessNameKey != null &&
                    this.AuthorizingProcessNameKey.Equals(input.AuthorizingProcessNameKey))
                ) && 
                (
                    this.AuthorizingReasonText == input.AuthorizingReasonText ||
                    (this.AuthorizingReasonText != null &&
                    this.AuthorizingReasonText.Equals(input.AuthorizingReasonText))
                ) && 
                (
                    this.AuthorizingReasonTextKey == input.AuthorizingReasonTextKey ||
                    (this.AuthorizingReasonTextKey != null &&
                    this.AuthorizingReasonTextKey.Equals(input.AuthorizingReasonTextKey))
                ) && 
                (
                    this.AuthorizingReasonTextParameters == input.AuthorizingReasonTextParameters ||
                    this.AuthorizingReasonTextParameters != null &&
                    this.AuthorizingReasonTextParameters.SequenceEqual(input.AuthorizingReasonTextParameters)
                ) && 
                (
                    this.AskIfAlreadyAuthorized == input.AskIfAlreadyAuthorized ||
                    (this.AskIfAlreadyAuthorized != null &&
                    this.AskIfAlreadyAuthorized.Equals(input.AskIfAlreadyAuthorized))
                ) && 
                (
                    this.LineItemRelevant == input.LineItemRelevant ||
                    (this.LineItemRelevant != null &&
                    this.LineItemRelevant.Equals(input.LineItemRelevant))
                ) && 
                (
                    this.RetailTransactionRelevant == input.RetailTransactionRelevant ||
                    (this.RetailTransactionRelevant != null &&
                    this.RetailTransactionRelevant.Equals(input.RetailTransactionRelevant))
                ) && 
                (
                    this.ControlTransactionRelevant == input.ControlTransactionRelevant ||
                    (this.ControlTransactionRelevant != null &&
                    this.ControlTransactionRelevant.Equals(input.ControlTransactionRelevant))
                ) && 
                (
                    this.TenderControlTransactionRelevant == input.TenderControlTransactionRelevant ||
                    (this.TenderControlTransactionRelevant != null &&
                    this.TenderControlTransactionRelevant.Equals(input.TenderControlTransactionRelevant))
                ) && 
                (
                    this.ActiveOperatorRequired == input.ActiveOperatorRequired ||
                    (this.ActiveOperatorRequired != null &&
                    this.ActiveOperatorRequired.Equals(input.ActiveOperatorRequired))
                ) && 
                (
                    this.OperatorSelectionAction == input.OperatorSelectionAction ||
                    (this.OperatorSelectionAction != null &&
                    this.OperatorSelectionAction.Equals(input.OperatorSelectionAction))
                ) && 
                (
                    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.AuthorizationRequired != null)
                    hashCode = hashCode * 59 + this.AuthorizationRequired.GetHashCode();
                if (this.RequiredRight != null)
                    hashCode = hashCode * 59 + this.RequiredRight.GetHashCode();
                if (this.AuthorizationMode != null)
                    hashCode = hashCode * 59 + this.AuthorizationMode.GetHashCode();
                if (this.CancellationAllowed != null)
                    hashCode = hashCode * 59 + this.CancellationAllowed.GetHashCode();
                if (this.PasswordRequired != null)
                    hashCode = hashCode * 59 + this.PasswordRequired.GetHashCode();
                if (this.DialogType != null)
                    hashCode = hashCode * 59 + this.DialogType.GetHashCode();
                if (this.CheckSecondUserRights != null)
                    hashCode = hashCode * 59 + this.CheckSecondUserRights.GetHashCode();
                if (this.LoginName != null)
                    hashCode = hashCode * 59 + this.LoginName.GetHashCode();
                if (this.AuthorizingProcessNameKey != null)
                    hashCode = hashCode * 59 + this.AuthorizingProcessNameKey.GetHashCode();
                if (this.AuthorizingReasonText != null)
                    hashCode = hashCode * 59 + this.AuthorizingReasonText.GetHashCode();
                if (this.AuthorizingReasonTextKey != null)
                    hashCode = hashCode * 59 + this.AuthorizingReasonTextKey.GetHashCode();
                if (this.AuthorizingReasonTextParameters != null)
                    hashCode = hashCode * 59 + this.AuthorizingReasonTextParameters.GetHashCode();
                if (this.AskIfAlreadyAuthorized != null)
                    hashCode = hashCode * 59 + this.AskIfAlreadyAuthorized.GetHashCode();
                if (this.LineItemRelevant != null)
                    hashCode = hashCode * 59 + this.LineItemRelevant.GetHashCode();
                if (this.RetailTransactionRelevant != null)
                    hashCode = hashCode * 59 + this.RetailTransactionRelevant.GetHashCode();
                if (this.ControlTransactionRelevant != null)
                    hashCode = hashCode * 59 + this.ControlTransactionRelevant.GetHashCode();
                if (this.TenderControlTransactionRelevant != null)
                    hashCode = hashCode * 59 + this.TenderControlTransactionRelevant.GetHashCode();
                if (this.ActiveOperatorRequired != null)
                    hashCode = hashCode * 59 + this.ActiveOperatorRequired.GetHashCode();
                if (this.OperatorSelectionAction != null)
                    hashCode = hashCode * 59 + this.OperatorSelectionAction.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;
        }
    }

}
