/* 
 * 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>
    /// PromptReceiptDataConfig &lt;p&gt;This configuration entity defines the PromptReceiptData process.&lt;/p&gt;
    /// </summary>
    [DataContract]
    public partial class ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig :  IEquatable<ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig>, IValidatableObject
    {
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig" /> class.
        /// </summary>
        [JsonConstructorAttribute]
        protected ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig() { }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig" /> class.
        /// </summary>
        /// <param name="processId">&lt;p&gt;This parameter defines the unique process ID.&lt;/p&gt; (required).</param>
        /// <param name="dialogTitleKey">&lt;p&gt;This parameter defines the key value for the prompt receipt data dialog title.&lt;/p&gt;.</param>
        /// <param name="forceManualInput">&lt;p&gt;Force manual input. The input dialog will shown even all predefined values are filled&lt;/p&gt;.</param>
        /// <param name="businessUnitIdRequired">&lt;p&gt;This parameter specifies whether a business unit ID will be returned and whether a business unit ID field will be visible in a dialog.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="businessUnitIdEditable">&lt;p&gt;This parameter specifies whether a business unit ID field is editable.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="businessUnitIdPredefined">&lt;p&gt;This parameter specifies a predefined business unit ID.&lt;/p&gt;.</param>
        /// <param name="businessUnitIdUseCurrent">&lt;p&gt;This parameter specifies whether a current business unit ID shall be used if no predefined business unit ID is given.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="businessDayDateRequired">&lt;p&gt;This parameter specifies whether a business day date will be returned and whether a business day date field will be visible in a dialog.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="businessDayDateEditable">&lt;p&gt;This parameter specifies whether a business day date field is editable.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="businessDayDatePredefined">&lt;p&gt;This parameter specifies whether a predefined value is used for the business day date. Example value: 2015-01-22&lt;/p&gt; Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone).</param>
        /// <param name="businessDayDateUseCurrent">&lt;p&gt;This parameter specifies whether a current business day date shall be used if no predefined business day date is given.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="workstationIdRequired">&lt;p&gt;This parameter specifies whether a workstation ID will be returned and whether a workstation ID field will be visible in a dialog.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="workstationIdEditable">&lt;p&gt;This parameter specifies whether a workstation ID field is editable.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="workstationIdPredefined">&lt;p&gt;This parameter specifies whether a predefined value is used for the workstation ID.&lt;/p&gt;.</param>
        /// <param name="workstationIdUseCurrent">&lt;p&gt;This parameter specifies whether a current workstation ID shall be used if no predefined workstation ID is given.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="receiptNumberRequired">&lt;p&gt;This parameter specifies whether a transaction sequence number will be returned and whether a transaction sequence number field will be visible in a dialog.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="receiptNumberEditable">&lt;p&gt;This parameter specifies whether a transaction sequence number field will be editable.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="receiptNumberPredefined">&lt;p&gt;This parameter specifies whether a predefined transaction sequence number is used.&lt;/p&gt;.</param>
        /// <param name="receiptNumberUseCurrent">&lt;p&gt;This parameter specifies whether a current transaction sequence number shall be used if no predefined transaction sequence number is given.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="useLastNonVoidedReceiptNumber">&lt;p&gt;This parameter specifies, whether only non voided retail transaction receipts should be considered?&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 ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig(string processId = default(string), string dialogTitleKey = default(string), bool? forceManualInput = default(bool?), bool? businessUnitIdRequired = default(bool?), bool? businessUnitIdEditable = default(bool?), string businessUnitIdPredefined = default(string), bool? businessUnitIdUseCurrent = default(bool?), bool? businessDayDateRequired = default(bool?), bool? businessDayDateEditable = default(bool?), string businessDayDatePredefined = default(string), bool? businessDayDateUseCurrent = default(bool?), bool? workstationIdRequired = default(bool?), bool? workstationIdEditable = default(bool?), string workstationIdPredefined = default(string), bool? workstationIdUseCurrent = default(bool?), bool? receiptNumberRequired = default(bool?), bool? receiptNumberEditable = default(bool?), string receiptNumberPredefined = default(string), bool? receiptNumberUseCurrent = default(bool?), bool? useLastNonVoidedReceiptNumber = default(bool?), 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 ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig and cannot be null");
            }
            else
            {
                this.ProcessId = processId;
            }
            // to ensure "businessUnitIdRequired" is required (not null)
            if (businessUnitIdRequired == null)
            {
                throw new InvalidDataException("businessUnitIdRequired is a required property for ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig and cannot be null");
            }
            else
            {
                this.BusinessUnitIdRequired = businessUnitIdRequired;
            }
            // to ensure "businessUnitIdEditable" is required (not null)
            if (businessUnitIdEditable == null)
            {
                throw new InvalidDataException("businessUnitIdEditable is a required property for ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig and cannot be null");
            }
            else
            {
                this.BusinessUnitIdEditable = businessUnitIdEditable;
            }
            // to ensure "businessUnitIdUseCurrent" is required (not null)
            if (businessUnitIdUseCurrent == null)
            {
                throw new InvalidDataException("businessUnitIdUseCurrent is a required property for ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig and cannot be null");
            }
            else
            {
                this.BusinessUnitIdUseCurrent = businessUnitIdUseCurrent;
            }
            // to ensure "businessDayDateRequired" is required (not null)
            if (businessDayDateRequired == null)
            {
                throw new InvalidDataException("businessDayDateRequired is a required property for ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig and cannot be null");
            }
            else
            {
                this.BusinessDayDateRequired = businessDayDateRequired;
            }
            // to ensure "businessDayDateEditable" is required (not null)
            if (businessDayDateEditable == null)
            {
                throw new InvalidDataException("businessDayDateEditable is a required property for ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig and cannot be null");
            }
            else
            {
                this.BusinessDayDateEditable = businessDayDateEditable;
            }
            // to ensure "businessDayDateUseCurrent" is required (not null)
            if (businessDayDateUseCurrent == null)
            {
                throw new InvalidDataException("businessDayDateUseCurrent is a required property for ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig and cannot be null");
            }
            else
            {
                this.BusinessDayDateUseCurrent = businessDayDateUseCurrent;
            }
            // to ensure "workstationIdRequired" is required (not null)
            if (workstationIdRequired == null)
            {
                throw new InvalidDataException("workstationIdRequired is a required property for ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig and cannot be null");
            }
            else
            {
                this.WorkstationIdRequired = workstationIdRequired;
            }
            // to ensure "workstationIdEditable" is required (not null)
            if (workstationIdEditable == null)
            {
                throw new InvalidDataException("workstationIdEditable is a required property for ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig and cannot be null");
            }
            else
            {
                this.WorkstationIdEditable = workstationIdEditable;
            }
            // to ensure "workstationIdUseCurrent" is required (not null)
            if (workstationIdUseCurrent == null)
            {
                throw new InvalidDataException("workstationIdUseCurrent is a required property for ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig and cannot be null");
            }
            else
            {
                this.WorkstationIdUseCurrent = workstationIdUseCurrent;
            }
            // to ensure "receiptNumberRequired" is required (not null)
            if (receiptNumberRequired == null)
            {
                throw new InvalidDataException("receiptNumberRequired is a required property for ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig and cannot be null");
            }
            else
            {
                this.ReceiptNumberRequired = receiptNumberRequired;
            }
            // to ensure "receiptNumberEditable" is required (not null)
            if (receiptNumberEditable == null)
            {
                throw new InvalidDataException("receiptNumberEditable is a required property for ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig and cannot be null");
            }
            else
            {
                this.ReceiptNumberEditable = receiptNumberEditable;
            }
            // to ensure "receiptNumberUseCurrent" is required (not null)
            if (receiptNumberUseCurrent == null)
            {
                throw new InvalidDataException("receiptNumberUseCurrent is a required property for ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig and cannot be null");
            }
            else
            {
                this.ReceiptNumberUseCurrent = receiptNumberUseCurrent;
            }
            this.DialogTitleKey = dialogTitleKey;
            this.ForceManualInput = forceManualInput;
            this.BusinessUnitIdPredefined = businessUnitIdPredefined;
            this.BusinessDayDatePredefined = businessDayDatePredefined;
            this.WorkstationIdPredefined = workstationIdPredefined;
            this.ReceiptNumberPredefined = receiptNumberPredefined;
            this.UseLastNonVoidedReceiptNumber = useLastNonVoidedReceiptNumber;
            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;This parameter defines the key value for the prompt receipt data dialog title.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the key value for the prompt receipt data dialog title.&lt;/p&gt;</value>
        [DataMember(Name="dialogTitleKey", EmitDefaultValue=false)]
        public string DialogTitleKey { get; set; }

        /// <summary>
        /// &lt;p&gt;Force manual input. The input dialog will shown even all predefined values are filled&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Force manual input. The input dialog will shown even all predefined values are filled&lt;/p&gt;</value>
        [DataMember(Name="forceManualInput", EmitDefaultValue=false)]
        public bool? ForceManualInput { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a business unit ID will be returned and whether a business unit ID field will be visible in a dialog.&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 business unit ID will be returned and whether a business unit ID field will be visible in a dialog.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="businessUnitIdRequired", EmitDefaultValue=false)]
        public bool? BusinessUnitIdRequired { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a business unit ID field is editable.&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 business unit ID field is editable.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="businessUnitIdEditable", EmitDefaultValue=false)]
        public bool? BusinessUnitIdEditable { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies a predefined business unit ID.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies a predefined business unit ID.&lt;/p&gt;</value>
        [DataMember(Name="businessUnitIdPredefined", EmitDefaultValue=false)]
        public string BusinessUnitIdPredefined { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a current business unit ID shall be used if no predefined business unit ID is given.&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 current business unit ID shall be used if no predefined business unit ID is given.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="businessUnitIdUseCurrent", EmitDefaultValue=false)]
        public bool? BusinessUnitIdUseCurrent { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a business day date will be returned and whether a business day date field will be visible in a dialog.&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 business day date will be returned and whether a business day date field will be visible in a dialog.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="businessDayDateRequired", EmitDefaultValue=false)]
        public bool? BusinessDayDateRequired { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a business day date field is editable.&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 business day date field is editable.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="businessDayDateEditable", EmitDefaultValue=false)]
        public bool? BusinessDayDateEditable { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a predefined value is used for the business day date. Example value: 2015-01-22&lt;/p&gt; Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone)
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies whether a predefined value is used for the business day date. Example value: 2015-01-22&lt;/p&gt; Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone)</value>
        [DataMember(Name="businessDayDatePredefined", EmitDefaultValue=false)]
        public string BusinessDayDatePredefined { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a current business day date shall be used if no predefined business day date is given.&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 current business day date shall be used if no predefined business day date is given.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="businessDayDateUseCurrent", EmitDefaultValue=false)]
        public bool? BusinessDayDateUseCurrent { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a workstation ID will be returned and whether a workstation ID field will be visible in a dialog.&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 workstation ID will be returned and whether a workstation ID field will be visible in a dialog.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="workstationIdRequired", EmitDefaultValue=false)]
        public bool? WorkstationIdRequired { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a workstation ID field is editable.&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 workstation ID field is editable.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="workstationIdEditable", EmitDefaultValue=false)]
        public bool? WorkstationIdEditable { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a predefined value is used for the workstation ID.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies whether a predefined value is used for the workstation ID.&lt;/p&gt;</value>
        [DataMember(Name="workstationIdPredefined", EmitDefaultValue=false)]
        public string WorkstationIdPredefined { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a current workstation ID shall be used if no predefined workstation ID is given.&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 current workstation ID shall be used if no predefined workstation ID is given.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="workstationIdUseCurrent", EmitDefaultValue=false)]
        public bool? WorkstationIdUseCurrent { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a transaction sequence number will be returned and whether a transaction sequence number field will be visible in a dialog.&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 transaction sequence number will be returned and whether a transaction sequence number field will be visible in a dialog.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="receiptNumberRequired", EmitDefaultValue=false)]
        public bool? ReceiptNumberRequired { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a transaction sequence number field will be editable.&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 transaction sequence number field will be editable.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="receiptNumberEditable", EmitDefaultValue=false)]
        public bool? ReceiptNumberEditable { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a predefined transaction sequence number is used.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies whether a predefined transaction sequence number is used.&lt;/p&gt;</value>
        [DataMember(Name="receiptNumberPredefined", EmitDefaultValue=false)]
        public string ReceiptNumberPredefined { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a current transaction sequence number shall be used if no predefined transaction sequence number is given.&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 current transaction sequence number shall be used if no predefined transaction sequence number is given.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="receiptNumberUseCurrent", EmitDefaultValue=false)]
        public bool? ReceiptNumberUseCurrent { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies, whether only non voided retail transaction receipts should be considered?&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies, whether only non voided retail transaction receipts should be considered?&lt;/p&gt;</value>
        [DataMember(Name="useLastNonVoidedReceiptNumber", EmitDefaultValue=false)]
        public bool? UseLastNonVoidedReceiptNumber { 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 ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig {\n");
            sb.Append("  ProcessId: ").Append(ProcessId).Append("\n");
            sb.Append("  DialogTitleKey: ").Append(DialogTitleKey).Append("\n");
            sb.Append("  ForceManualInput: ").Append(ForceManualInput).Append("\n");
            sb.Append("  BusinessUnitIdRequired: ").Append(BusinessUnitIdRequired).Append("\n");
            sb.Append("  BusinessUnitIdEditable: ").Append(BusinessUnitIdEditable).Append("\n");
            sb.Append("  BusinessUnitIdPredefined: ").Append(BusinessUnitIdPredefined).Append("\n");
            sb.Append("  BusinessUnitIdUseCurrent: ").Append(BusinessUnitIdUseCurrent).Append("\n");
            sb.Append("  BusinessDayDateRequired: ").Append(BusinessDayDateRequired).Append("\n");
            sb.Append("  BusinessDayDateEditable: ").Append(BusinessDayDateEditable).Append("\n");
            sb.Append("  BusinessDayDatePredefined: ").Append(BusinessDayDatePredefined).Append("\n");
            sb.Append("  BusinessDayDateUseCurrent: ").Append(BusinessDayDateUseCurrent).Append("\n");
            sb.Append("  WorkstationIdRequired: ").Append(WorkstationIdRequired).Append("\n");
            sb.Append("  WorkstationIdEditable: ").Append(WorkstationIdEditable).Append("\n");
            sb.Append("  WorkstationIdPredefined: ").Append(WorkstationIdPredefined).Append("\n");
            sb.Append("  WorkstationIdUseCurrent: ").Append(WorkstationIdUseCurrent).Append("\n");
            sb.Append("  ReceiptNumberRequired: ").Append(ReceiptNumberRequired).Append("\n");
            sb.Append("  ReceiptNumberEditable: ").Append(ReceiptNumberEditable).Append("\n");
            sb.Append("  ReceiptNumberPredefined: ").Append(ReceiptNumberPredefined).Append("\n");
            sb.Append("  ReceiptNumberUseCurrent: ").Append(ReceiptNumberUseCurrent).Append("\n");
            sb.Append("  UseLastNonVoidedReceiptNumber: ").Append(UseLastNonVoidedReceiptNumber).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 ComGkSoftwarePosApiModelConfigProcessUiPromptReceiptDataConfig);
        }

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

            return 
                (
                    this.ProcessId == input.ProcessId ||
                    (this.ProcessId != null &&
                    this.ProcessId.Equals(input.ProcessId))
                ) && 
                (
                    this.DialogTitleKey == input.DialogTitleKey ||
                    (this.DialogTitleKey != null &&
                    this.DialogTitleKey.Equals(input.DialogTitleKey))
                ) && 
                (
                    this.ForceManualInput == input.ForceManualInput ||
                    (this.ForceManualInput != null &&
                    this.ForceManualInput.Equals(input.ForceManualInput))
                ) && 
                (
                    this.BusinessUnitIdRequired == input.BusinessUnitIdRequired ||
                    (this.BusinessUnitIdRequired != null &&
                    this.BusinessUnitIdRequired.Equals(input.BusinessUnitIdRequired))
                ) && 
                (
                    this.BusinessUnitIdEditable == input.BusinessUnitIdEditable ||
                    (this.BusinessUnitIdEditable != null &&
                    this.BusinessUnitIdEditable.Equals(input.BusinessUnitIdEditable))
                ) && 
                (
                    this.BusinessUnitIdPredefined == input.BusinessUnitIdPredefined ||
                    (this.BusinessUnitIdPredefined != null &&
                    this.BusinessUnitIdPredefined.Equals(input.BusinessUnitIdPredefined))
                ) && 
                (
                    this.BusinessUnitIdUseCurrent == input.BusinessUnitIdUseCurrent ||
                    (this.BusinessUnitIdUseCurrent != null &&
                    this.BusinessUnitIdUseCurrent.Equals(input.BusinessUnitIdUseCurrent))
                ) && 
                (
                    this.BusinessDayDateRequired == input.BusinessDayDateRequired ||
                    (this.BusinessDayDateRequired != null &&
                    this.BusinessDayDateRequired.Equals(input.BusinessDayDateRequired))
                ) && 
                (
                    this.BusinessDayDateEditable == input.BusinessDayDateEditable ||
                    (this.BusinessDayDateEditable != null &&
                    this.BusinessDayDateEditable.Equals(input.BusinessDayDateEditable))
                ) && 
                (
                    this.BusinessDayDatePredefined == input.BusinessDayDatePredefined ||
                    (this.BusinessDayDatePredefined != null &&
                    this.BusinessDayDatePredefined.Equals(input.BusinessDayDatePredefined))
                ) && 
                (
                    this.BusinessDayDateUseCurrent == input.BusinessDayDateUseCurrent ||
                    (this.BusinessDayDateUseCurrent != null &&
                    this.BusinessDayDateUseCurrent.Equals(input.BusinessDayDateUseCurrent))
                ) && 
                (
                    this.WorkstationIdRequired == input.WorkstationIdRequired ||
                    (this.WorkstationIdRequired != null &&
                    this.WorkstationIdRequired.Equals(input.WorkstationIdRequired))
                ) && 
                (
                    this.WorkstationIdEditable == input.WorkstationIdEditable ||
                    (this.WorkstationIdEditable != null &&
                    this.WorkstationIdEditable.Equals(input.WorkstationIdEditable))
                ) && 
                (
                    this.WorkstationIdPredefined == input.WorkstationIdPredefined ||
                    (this.WorkstationIdPredefined != null &&
                    this.WorkstationIdPredefined.Equals(input.WorkstationIdPredefined))
                ) && 
                (
                    this.WorkstationIdUseCurrent == input.WorkstationIdUseCurrent ||
                    (this.WorkstationIdUseCurrent != null &&
                    this.WorkstationIdUseCurrent.Equals(input.WorkstationIdUseCurrent))
                ) && 
                (
                    this.ReceiptNumberRequired == input.ReceiptNumberRequired ||
                    (this.ReceiptNumberRequired != null &&
                    this.ReceiptNumberRequired.Equals(input.ReceiptNumberRequired))
                ) && 
                (
                    this.ReceiptNumberEditable == input.ReceiptNumberEditable ||
                    (this.ReceiptNumberEditable != null &&
                    this.ReceiptNumberEditable.Equals(input.ReceiptNumberEditable))
                ) && 
                (
                    this.ReceiptNumberPredefined == input.ReceiptNumberPredefined ||
                    (this.ReceiptNumberPredefined != null &&
                    this.ReceiptNumberPredefined.Equals(input.ReceiptNumberPredefined))
                ) && 
                (
                    this.ReceiptNumberUseCurrent == input.ReceiptNumberUseCurrent ||
                    (this.ReceiptNumberUseCurrent != null &&
                    this.ReceiptNumberUseCurrent.Equals(input.ReceiptNumberUseCurrent))
                ) && 
                (
                    this.UseLastNonVoidedReceiptNumber == input.UseLastNonVoidedReceiptNumber ||
                    (this.UseLastNonVoidedReceiptNumber != null &&
                    this.UseLastNonVoidedReceiptNumber.Equals(input.UseLastNonVoidedReceiptNumber))
                ) && 
                (
                    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.DialogTitleKey != null)
                    hashCode = hashCode * 59 + this.DialogTitleKey.GetHashCode();
                if (this.ForceManualInput != null)
                    hashCode = hashCode * 59 + this.ForceManualInput.GetHashCode();
                if (this.BusinessUnitIdRequired != null)
                    hashCode = hashCode * 59 + this.BusinessUnitIdRequired.GetHashCode();
                if (this.BusinessUnitIdEditable != null)
                    hashCode = hashCode * 59 + this.BusinessUnitIdEditable.GetHashCode();
                if (this.BusinessUnitIdPredefined != null)
                    hashCode = hashCode * 59 + this.BusinessUnitIdPredefined.GetHashCode();
                if (this.BusinessUnitIdUseCurrent != null)
                    hashCode = hashCode * 59 + this.BusinessUnitIdUseCurrent.GetHashCode();
                if (this.BusinessDayDateRequired != null)
                    hashCode = hashCode * 59 + this.BusinessDayDateRequired.GetHashCode();
                if (this.BusinessDayDateEditable != null)
                    hashCode = hashCode * 59 + this.BusinessDayDateEditable.GetHashCode();
                if (this.BusinessDayDatePredefined != null)
                    hashCode = hashCode * 59 + this.BusinessDayDatePredefined.GetHashCode();
                if (this.BusinessDayDateUseCurrent != null)
                    hashCode = hashCode * 59 + this.BusinessDayDateUseCurrent.GetHashCode();
                if (this.WorkstationIdRequired != null)
                    hashCode = hashCode * 59 + this.WorkstationIdRequired.GetHashCode();
                if (this.WorkstationIdEditable != null)
                    hashCode = hashCode * 59 + this.WorkstationIdEditable.GetHashCode();
                if (this.WorkstationIdPredefined != null)
                    hashCode = hashCode * 59 + this.WorkstationIdPredefined.GetHashCode();
                if (this.WorkstationIdUseCurrent != null)
                    hashCode = hashCode * 59 + this.WorkstationIdUseCurrent.GetHashCode();
                if (this.ReceiptNumberRequired != null)
                    hashCode = hashCode * 59 + this.ReceiptNumberRequired.GetHashCode();
                if (this.ReceiptNumberEditable != null)
                    hashCode = hashCode * 59 + this.ReceiptNumberEditable.GetHashCode();
                if (this.ReceiptNumberPredefined != null)
                    hashCode = hashCode * 59 + this.ReceiptNumberPredefined.GetHashCode();
                if (this.ReceiptNumberUseCurrent != null)
                    hashCode = hashCode * 59 + this.ReceiptNumberUseCurrent.GetHashCode();
                if (this.UseLastNonVoidedReceiptNumber != null)
                    hashCode = hashCode * 59 + this.UseLastNonVoidedReceiptNumber.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;
        }
    }

}
