/* 
 * 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>
    /// TransactionPreviewContextConfig &lt;p&gt;This configuration entity defines the transaction preview. The config parameters will be passed to the transaction preview component, controller, report and datasource.&lt;/p&gt;
    /// </summary>
    [DataContract]
    public partial class ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig :  IEquatable<ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig>, IValidatableObject
    {
        /// <summary>
        /// &lt;p&gt;The language scope for the transaction preview report translations. Leave empty (null) to set the Transaction scope (with the system default locale) as default.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The language scope for the transaction preview report translations. Leave empty (null) to set the Transaction scope (with the system default locale) as default.&lt;/p&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum LanguageScopeEnum
        {
            
            /// <summary>
            /// Enum Operator for value: Operator
            /// </summary>
            [EnumMember(Value = "Operator")]
            Operator = 1,
            
            /// <summary>
            /// Enum Customer for value: Customer
            /// </summary>
            [EnumMember(Value = "Customer")]
            Customer = 2,
            
            /// <summary>
            /// Enum Transaction for value: Transaction
            /// </summary>
            [EnumMember(Value = "Transaction")]
            Transaction = 3,
            
            /// <summary>
            /// Enum MasterData for value: MasterData
            /// </summary>
            [EnumMember(Value = "MasterData")]
            MasterData = 4
        }

        /// <summary>
        /// &lt;p&gt;The language scope for the transaction preview report translations. Leave empty (null) to set the Transaction scope (with the system default locale) as default.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The language scope for the transaction preview report translations. Leave empty (null) to set the Transaction scope (with the system default locale) as default.&lt;/p&gt;</value>
        [DataMember(Name="languageScope", EmitDefaultValue=false)]
        public LanguageScopeEnum? LanguageScope { get; set; }
        /// <summary>
        /// Defines HorizontalPositioningType
        /// </summary>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum HorizontalPositioningTypeEnum
        {
            
            /// <summary>
            /// Enum Char for value: Char
            /// </summary>
            [EnumMember(Value = "Char")]
            Char = 1,
            
            /// <summary>
            /// Enum Pixel for value: Pixel
            /// </summary>
            [EnumMember(Value = "Pixel")]
            Pixel = 2
        }

        /// <summary>
        /// Gets or Sets HorizontalPositioningType
        /// </summary>
        [DataMember(Name="horizontalPositioningType", EmitDefaultValue=false)]
        public HorizontalPositioningTypeEnum HorizontalPositioningType { get; set; }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig" /> class.
        /// </summary>
        [JsonConstructorAttribute]
        protected ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig() { }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig" /> class.
        /// </summary>
        /// <param name="templateName">&lt;p&gt;Name of the report template.&lt;/p&gt; (required).</param>
        /// <param name="languageScope">&lt;p&gt;The language scope for the transaction preview report translations. Leave empty (null) to set the Transaction scope (with the system default locale) as default.&lt;/p&gt;.</param>
        /// <param name="horizontalPositioningType">horizontalPositioningType (required).</param>
        /// <param name="verticalLinePadding">verticalLinePadding.</param>
        /// <param name="verticalLineSpacing">verticalLineSpacing.</param>
        /// <param name="considerScopeTransactions">considerScopeTransactions (required).</param>
        /// <param name="showHeader">&lt;p&gt;This parameter specifies whether the header should be displayed or not.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="showTotals">&lt;p&gt;This parameter specifies whether the total should be displayed or not.&lt;/p&gt; (required).</param>
        /// <param name="rowSelectionAllowed">&lt;p&gt;This parameter specifies whether a row selection is allowed in general.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="cellEditAllowed">&lt;p&gt;This parameter specifies whether inline cell editing is allowed in general.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="showReturnableQuantity">&lt;p&gt;Not supported.&lt;br /&gt; @deprecated - never implemented in any release.&lt;br /&gt; This parameter specifies whether the returnable quantity for a line item should be displayed or not.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="showLastChangedRow">&lt;p&gt;This parameter specifies whether the last changed row should be made visible.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="selectLastChangedRow">selectLastChangedRow (required).</param>
        /// <param name="editLastChangedRow">&lt;p&gt;This parameter specifies whether the last changed row should be edited.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="clearSelectionsForLastChangedRow">clearSelectionsForLastChangedRow (required).</param>
        /// <param name="advancedSelectionMode">advancedSelectionMode (required).</param>
        /// <param name="showVoidedLineItems">showVoidedLineItems (required).</param>
        /// <param name="showSubtotalRounding">&lt;p&gt;This parameter specifies whether the sub total rounding should be displayed or not.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="showChangeRounding">&lt;p&gt;This parameter specifies whether the change rounding should be displayed or not.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="showInlinePanel">showInlinePanel (required).</param>
        /// <param name="showLineItems">&lt;p&gt;This parameter specifies whether the line items for the given type codes should be displayed or not.&lt;/p&gt; (required).</param>
        /// <param name="selectableLineItems">&lt;p&gt;This parameter specifies whether line items for the given type codes are selectable or not.&lt;/p&gt;.</param>
        /// <param name="selectableSaleReturnLineItems">&lt;p&gt;This parameter specifies whether sale return line items for the given type codes are selectable or not. Has no effect if selectableLineItems does not include sale return line items.&lt;/p&gt;.</param>
        /// <param name="saleReturnLineItemReturnTypes">saleReturnLineItemReturnTypes.</param>
        /// <param name="editableLineItems">&lt;p&gt;This parameter specifies whether line items for the given type codes are inline editable (cell editors) or not.&lt;/p&gt;.</param>
        /// <param name="showFooter">&lt;p&gt;Set whether the footer should be displayed or not. Default value is false.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&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 ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig(string templateName = default(string), LanguageScopeEnum? languageScope = default(LanguageScopeEnum?), HorizontalPositioningTypeEnum horizontalPositioningType = default(HorizontalPositioningTypeEnum), int? verticalLinePadding = default(int?), int? verticalLineSpacing = default(int?), bool? considerScopeTransactions = default(bool?), bool? showHeader = default(bool?), List<string> showTotals = default(List<string>), bool? rowSelectionAllowed = default(bool?), bool? cellEditAllowed = default(bool?), bool? showReturnableQuantity = default(bool?), bool? showLastChangedRow = default(bool?), bool? selectLastChangedRow = default(bool?), bool? editLastChangedRow = default(bool?), bool? clearSelectionsForLastChangedRow = default(bool?), bool? advancedSelectionMode = default(bool?), bool? showVoidedLineItems = default(bool?), bool? showSubtotalRounding = default(bool?), bool? showChangeRounding = default(bool?), bool? showInlinePanel = default(bool?), List<string> showLineItems = default(List<string>), List<string> selectableLineItems = default(List<string>), List<string> selectableSaleReturnLineItems = default(List<string>), List<string> saleReturnLineItemReturnTypes = default(List<string>), List<string> editableLineItems = default(List<string>), bool? showFooter = 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 "templateName" is required (not null)
            if (templateName == null)
            {
                throw new InvalidDataException("templateName is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.TemplateName = templateName;
            }
            // to ensure "horizontalPositioningType" is required (not null)
            if (horizontalPositioningType == null)
            {
                throw new InvalidDataException("horizontalPositioningType is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.HorizontalPositioningType = horizontalPositioningType;
            }
            // to ensure "considerScopeTransactions" is required (not null)
            if (considerScopeTransactions == null)
            {
                throw new InvalidDataException("considerScopeTransactions is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.ConsiderScopeTransactions = considerScopeTransactions;
            }
            // to ensure "showHeader" is required (not null)
            if (showHeader == null)
            {
                throw new InvalidDataException("showHeader is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.ShowHeader = showHeader;
            }
            // to ensure "showTotals" is required (not null)
            if (showTotals == null)
            {
                throw new InvalidDataException("showTotals is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.ShowTotals = showTotals;
            }
            // to ensure "rowSelectionAllowed" is required (not null)
            if (rowSelectionAllowed == null)
            {
                throw new InvalidDataException("rowSelectionAllowed is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.RowSelectionAllowed = rowSelectionAllowed;
            }
            // to ensure "cellEditAllowed" is required (not null)
            if (cellEditAllowed == null)
            {
                throw new InvalidDataException("cellEditAllowed is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.CellEditAllowed = cellEditAllowed;
            }
            // to ensure "showReturnableQuantity" is required (not null)
            if (showReturnableQuantity == null)
            {
                throw new InvalidDataException("showReturnableQuantity is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.ShowReturnableQuantity = showReturnableQuantity;
            }
            // to ensure "showLastChangedRow" is required (not null)
            if (showLastChangedRow == null)
            {
                throw new InvalidDataException("showLastChangedRow is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.ShowLastChangedRow = showLastChangedRow;
            }
            // to ensure "selectLastChangedRow" is required (not null)
            if (selectLastChangedRow == null)
            {
                throw new InvalidDataException("selectLastChangedRow is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.SelectLastChangedRow = selectLastChangedRow;
            }
            // to ensure "editLastChangedRow" is required (not null)
            if (editLastChangedRow == null)
            {
                throw new InvalidDataException("editLastChangedRow is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.EditLastChangedRow = editLastChangedRow;
            }
            // to ensure "clearSelectionsForLastChangedRow" is required (not null)
            if (clearSelectionsForLastChangedRow == null)
            {
                throw new InvalidDataException("clearSelectionsForLastChangedRow is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.ClearSelectionsForLastChangedRow = clearSelectionsForLastChangedRow;
            }
            // to ensure "advancedSelectionMode" is required (not null)
            if (advancedSelectionMode == null)
            {
                throw new InvalidDataException("advancedSelectionMode is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.AdvancedSelectionMode = advancedSelectionMode;
            }
            // to ensure "showVoidedLineItems" is required (not null)
            if (showVoidedLineItems == null)
            {
                throw new InvalidDataException("showVoidedLineItems is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.ShowVoidedLineItems = showVoidedLineItems;
            }
            // to ensure "showSubtotalRounding" is required (not null)
            if (showSubtotalRounding == null)
            {
                throw new InvalidDataException("showSubtotalRounding is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.ShowSubtotalRounding = showSubtotalRounding;
            }
            // to ensure "showChangeRounding" is required (not null)
            if (showChangeRounding == null)
            {
                throw new InvalidDataException("showChangeRounding is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.ShowChangeRounding = showChangeRounding;
            }
            // to ensure "showInlinePanel" is required (not null)
            if (showInlinePanel == null)
            {
                throw new InvalidDataException("showInlinePanel is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.ShowInlinePanel = showInlinePanel;
            }
            // to ensure "showLineItems" is required (not null)
            if (showLineItems == null)
            {
                throw new InvalidDataException("showLineItems is a required property for ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig and cannot be null");
            }
            else
            {
                this.ShowLineItems = showLineItems;
            }
            this.LanguageScope = languageScope;
            this.VerticalLinePadding = verticalLinePadding;
            this.VerticalLineSpacing = verticalLineSpacing;
            this.SelectableLineItems = selectableLineItems;
            this.SelectableSaleReturnLineItems = selectableSaleReturnLineItems;
            this.SaleReturnLineItemReturnTypes = saleReturnLineItemReturnTypes;
            this.EditableLineItems = editableLineItems;
            this.ShowFooter = showFooter;
            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;Name of the report template.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Name of the report template.&lt;/p&gt;</value>
        [DataMember(Name="templateName", EmitDefaultValue=false)]
        public string TemplateName { get; set; }



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

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

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

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether the header should be displayed 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 specifies whether the header should be displayed or not.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="showHeader", EmitDefaultValue=false)]
        public bool? ShowHeader { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether the total should be displayed or not.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies whether the total should be displayed or not.&lt;/p&gt;</value>
        [DataMember(Name="showTotals", EmitDefaultValue=false)]
        public List<string> ShowTotals { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a row selection is allowed in general.&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 row selection is allowed in general.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="rowSelectionAllowed", EmitDefaultValue=false)]
        public bool? RowSelectionAllowed { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether inline cell editing is allowed in general.&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 inline cell editing is allowed in general.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="cellEditAllowed", EmitDefaultValue=false)]
        public bool? CellEditAllowed { get; set; }

        /// <summary>
        /// &lt;p&gt;Not supported.&lt;br /&gt; @deprecated - never implemented in any release.&lt;br /&gt; This parameter specifies whether the returnable quantity for a line item should be displayed 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;Not supported.&lt;br /&gt; @deprecated - never implemented in any release.&lt;br /&gt; This parameter specifies whether the returnable quantity for a line item should be displayed or not.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="showReturnableQuantity", EmitDefaultValue=false)]
        public bool? ShowReturnableQuantity { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether the last changed row should be made visible.&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 last changed row should be made visible.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="showLastChangedRow", EmitDefaultValue=false)]
        public bool? ShowLastChangedRow { get; set; }

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

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether the last changed row should be edited.&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 last changed row should be edited.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="editLastChangedRow", EmitDefaultValue=false)]
        public bool? EditLastChangedRow { get; set; }

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

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

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

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether the sub total rounding should be displayed 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 specifies whether the sub total rounding should be displayed or not.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="showSubtotalRounding", EmitDefaultValue=false)]
        public bool? ShowSubtotalRounding { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether the change rounding should be displayed 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 specifies whether the change rounding should be displayed or not.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="showChangeRounding", EmitDefaultValue=false)]
        public bool? ShowChangeRounding { get; set; }

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

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether the line items for the given type codes should be displayed or not.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies whether the line items for the given type codes should be displayed or not.&lt;/p&gt;</value>
        [DataMember(Name="showLineItems", EmitDefaultValue=false)]
        public List<string> ShowLineItems { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether line items for the given type codes are selectable or not.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies whether line items for the given type codes are selectable or not.&lt;/p&gt;</value>
        [DataMember(Name="selectableLineItems", EmitDefaultValue=false)]
        public List<string> SelectableLineItems { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether sale return line items for the given type codes are selectable or not. Has no effect if selectableLineItems does not include sale return line items.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies whether sale return line items for the given type codes are selectable or not. Has no effect if selectableLineItems does not include sale return line items.&lt;/p&gt;</value>
        [DataMember(Name="selectableSaleReturnLineItems", EmitDefaultValue=false)]
        public List<string> SelectableSaleReturnLineItems { get; set; }

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

        /// <summary>
        /// &lt;p&gt;This parameter specifies whether line items for the given type codes are inline editable (cell editors) or not.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies whether line items for the given type codes are inline editable (cell editors) or not.&lt;/p&gt;</value>
        [DataMember(Name="editableLineItems", EmitDefaultValue=false)]
        public List<string> EditableLineItems { get; set; }

        /// <summary>
        /// &lt;p&gt;Set whether the footer should be displayed or not. Default value is false.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;
        /// </summary>
        /// <value>&lt;p&gt;Set whether the footer should be displayed or not. Default value is false.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="showFooter", EmitDefaultValue=false)]
        public bool? ShowFooter { 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 ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig {\n");
            sb.Append("  TemplateName: ").Append(TemplateName).Append("\n");
            sb.Append("  LanguageScope: ").Append(LanguageScope).Append("\n");
            sb.Append("  HorizontalPositioningType: ").Append(HorizontalPositioningType).Append("\n");
            sb.Append("  VerticalLinePadding: ").Append(VerticalLinePadding).Append("\n");
            sb.Append("  VerticalLineSpacing: ").Append(VerticalLineSpacing).Append("\n");
            sb.Append("  ConsiderScopeTransactions: ").Append(ConsiderScopeTransactions).Append("\n");
            sb.Append("  ShowHeader: ").Append(ShowHeader).Append("\n");
            sb.Append("  ShowTotals: ").Append(ShowTotals).Append("\n");
            sb.Append("  RowSelectionAllowed: ").Append(RowSelectionAllowed).Append("\n");
            sb.Append("  CellEditAllowed: ").Append(CellEditAllowed).Append("\n");
            sb.Append("  ShowReturnableQuantity: ").Append(ShowReturnableQuantity).Append("\n");
            sb.Append("  ShowLastChangedRow: ").Append(ShowLastChangedRow).Append("\n");
            sb.Append("  SelectLastChangedRow: ").Append(SelectLastChangedRow).Append("\n");
            sb.Append("  EditLastChangedRow: ").Append(EditLastChangedRow).Append("\n");
            sb.Append("  ClearSelectionsForLastChangedRow: ").Append(ClearSelectionsForLastChangedRow).Append("\n");
            sb.Append("  AdvancedSelectionMode: ").Append(AdvancedSelectionMode).Append("\n");
            sb.Append("  ShowVoidedLineItems: ").Append(ShowVoidedLineItems).Append("\n");
            sb.Append("  ShowSubtotalRounding: ").Append(ShowSubtotalRounding).Append("\n");
            sb.Append("  ShowChangeRounding: ").Append(ShowChangeRounding).Append("\n");
            sb.Append("  ShowInlinePanel: ").Append(ShowInlinePanel).Append("\n");
            sb.Append("  ShowLineItems: ").Append(ShowLineItems).Append("\n");
            sb.Append("  SelectableLineItems: ").Append(SelectableLineItems).Append("\n");
            sb.Append("  SelectableSaleReturnLineItems: ").Append(SelectableSaleReturnLineItems).Append("\n");
            sb.Append("  SaleReturnLineItemReturnTypes: ").Append(SaleReturnLineItemReturnTypes).Append("\n");
            sb.Append("  EditableLineItems: ").Append(EditableLineItems).Append("\n");
            sb.Append("  ShowFooter: ").Append(ShowFooter).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 ComGkSoftwarePosApiModelConfigProcessUiTransactionPreviewContextConfig);
        }

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

            return 
                (
                    this.TemplateName == input.TemplateName ||
                    (this.TemplateName != null &&
                    this.TemplateName.Equals(input.TemplateName))
                ) && 
                (
                    this.LanguageScope == input.LanguageScope ||
                    (this.LanguageScope != null &&
                    this.LanguageScope.Equals(input.LanguageScope))
                ) && 
                (
                    this.HorizontalPositioningType == input.HorizontalPositioningType ||
                    (this.HorizontalPositioningType != null &&
                    this.HorizontalPositioningType.Equals(input.HorizontalPositioningType))
                ) && 
                (
                    this.VerticalLinePadding == input.VerticalLinePadding ||
                    (this.VerticalLinePadding != null &&
                    this.VerticalLinePadding.Equals(input.VerticalLinePadding))
                ) && 
                (
                    this.VerticalLineSpacing == input.VerticalLineSpacing ||
                    (this.VerticalLineSpacing != null &&
                    this.VerticalLineSpacing.Equals(input.VerticalLineSpacing))
                ) && 
                (
                    this.ConsiderScopeTransactions == input.ConsiderScopeTransactions ||
                    (this.ConsiderScopeTransactions != null &&
                    this.ConsiderScopeTransactions.Equals(input.ConsiderScopeTransactions))
                ) && 
                (
                    this.ShowHeader == input.ShowHeader ||
                    (this.ShowHeader != null &&
                    this.ShowHeader.Equals(input.ShowHeader))
                ) && 
                (
                    this.ShowTotals == input.ShowTotals ||
                    this.ShowTotals != null &&
                    this.ShowTotals.SequenceEqual(input.ShowTotals)
                ) && 
                (
                    this.RowSelectionAllowed == input.RowSelectionAllowed ||
                    (this.RowSelectionAllowed != null &&
                    this.RowSelectionAllowed.Equals(input.RowSelectionAllowed))
                ) && 
                (
                    this.CellEditAllowed == input.CellEditAllowed ||
                    (this.CellEditAllowed != null &&
                    this.CellEditAllowed.Equals(input.CellEditAllowed))
                ) && 
                (
                    this.ShowReturnableQuantity == input.ShowReturnableQuantity ||
                    (this.ShowReturnableQuantity != null &&
                    this.ShowReturnableQuantity.Equals(input.ShowReturnableQuantity))
                ) && 
                (
                    this.ShowLastChangedRow == input.ShowLastChangedRow ||
                    (this.ShowLastChangedRow != null &&
                    this.ShowLastChangedRow.Equals(input.ShowLastChangedRow))
                ) && 
                (
                    this.SelectLastChangedRow == input.SelectLastChangedRow ||
                    (this.SelectLastChangedRow != null &&
                    this.SelectLastChangedRow.Equals(input.SelectLastChangedRow))
                ) && 
                (
                    this.EditLastChangedRow == input.EditLastChangedRow ||
                    (this.EditLastChangedRow != null &&
                    this.EditLastChangedRow.Equals(input.EditLastChangedRow))
                ) && 
                (
                    this.ClearSelectionsForLastChangedRow == input.ClearSelectionsForLastChangedRow ||
                    (this.ClearSelectionsForLastChangedRow != null &&
                    this.ClearSelectionsForLastChangedRow.Equals(input.ClearSelectionsForLastChangedRow))
                ) && 
                (
                    this.AdvancedSelectionMode == input.AdvancedSelectionMode ||
                    (this.AdvancedSelectionMode != null &&
                    this.AdvancedSelectionMode.Equals(input.AdvancedSelectionMode))
                ) && 
                (
                    this.ShowVoidedLineItems == input.ShowVoidedLineItems ||
                    (this.ShowVoidedLineItems != null &&
                    this.ShowVoidedLineItems.Equals(input.ShowVoidedLineItems))
                ) && 
                (
                    this.ShowSubtotalRounding == input.ShowSubtotalRounding ||
                    (this.ShowSubtotalRounding != null &&
                    this.ShowSubtotalRounding.Equals(input.ShowSubtotalRounding))
                ) && 
                (
                    this.ShowChangeRounding == input.ShowChangeRounding ||
                    (this.ShowChangeRounding != null &&
                    this.ShowChangeRounding.Equals(input.ShowChangeRounding))
                ) && 
                (
                    this.ShowInlinePanel == input.ShowInlinePanel ||
                    (this.ShowInlinePanel != null &&
                    this.ShowInlinePanel.Equals(input.ShowInlinePanel))
                ) && 
                (
                    this.ShowLineItems == input.ShowLineItems ||
                    this.ShowLineItems != null &&
                    this.ShowLineItems.SequenceEqual(input.ShowLineItems)
                ) && 
                (
                    this.SelectableLineItems == input.SelectableLineItems ||
                    this.SelectableLineItems != null &&
                    this.SelectableLineItems.SequenceEqual(input.SelectableLineItems)
                ) && 
                (
                    this.SelectableSaleReturnLineItems == input.SelectableSaleReturnLineItems ||
                    this.SelectableSaleReturnLineItems != null &&
                    this.SelectableSaleReturnLineItems.SequenceEqual(input.SelectableSaleReturnLineItems)
                ) && 
                (
                    this.SaleReturnLineItemReturnTypes == input.SaleReturnLineItemReturnTypes ||
                    this.SaleReturnLineItemReturnTypes != null &&
                    this.SaleReturnLineItemReturnTypes.SequenceEqual(input.SaleReturnLineItemReturnTypes)
                ) && 
                (
                    this.EditableLineItems == input.EditableLineItems ||
                    this.EditableLineItems != null &&
                    this.EditableLineItems.SequenceEqual(input.EditableLineItems)
                ) && 
                (
                    this.ShowFooter == input.ShowFooter ||
                    (this.ShowFooter != null &&
                    this.ShowFooter.Equals(input.ShowFooter))
                ) && 
                (
                    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.TemplateName != null)
                    hashCode = hashCode * 59 + this.TemplateName.GetHashCode();
                if (this.LanguageScope != null)
                    hashCode = hashCode * 59 + this.LanguageScope.GetHashCode();
                if (this.HorizontalPositioningType != null)
                    hashCode = hashCode * 59 + this.HorizontalPositioningType.GetHashCode();
                if (this.VerticalLinePadding != null)
                    hashCode = hashCode * 59 + this.VerticalLinePadding.GetHashCode();
                if (this.VerticalLineSpacing != null)
                    hashCode = hashCode * 59 + this.VerticalLineSpacing.GetHashCode();
                if (this.ConsiderScopeTransactions != null)
                    hashCode = hashCode * 59 + this.ConsiderScopeTransactions.GetHashCode();
                if (this.ShowHeader != null)
                    hashCode = hashCode * 59 + this.ShowHeader.GetHashCode();
                if (this.ShowTotals != null)
                    hashCode = hashCode * 59 + this.ShowTotals.GetHashCode();
                if (this.RowSelectionAllowed != null)
                    hashCode = hashCode * 59 + this.RowSelectionAllowed.GetHashCode();
                if (this.CellEditAllowed != null)
                    hashCode = hashCode * 59 + this.CellEditAllowed.GetHashCode();
                if (this.ShowReturnableQuantity != null)
                    hashCode = hashCode * 59 + this.ShowReturnableQuantity.GetHashCode();
                if (this.ShowLastChangedRow != null)
                    hashCode = hashCode * 59 + this.ShowLastChangedRow.GetHashCode();
                if (this.SelectLastChangedRow != null)
                    hashCode = hashCode * 59 + this.SelectLastChangedRow.GetHashCode();
                if (this.EditLastChangedRow != null)
                    hashCode = hashCode * 59 + this.EditLastChangedRow.GetHashCode();
                if (this.ClearSelectionsForLastChangedRow != null)
                    hashCode = hashCode * 59 + this.ClearSelectionsForLastChangedRow.GetHashCode();
                if (this.AdvancedSelectionMode != null)
                    hashCode = hashCode * 59 + this.AdvancedSelectionMode.GetHashCode();
                if (this.ShowVoidedLineItems != null)
                    hashCode = hashCode * 59 + this.ShowVoidedLineItems.GetHashCode();
                if (this.ShowSubtotalRounding != null)
                    hashCode = hashCode * 59 + this.ShowSubtotalRounding.GetHashCode();
                if (this.ShowChangeRounding != null)
                    hashCode = hashCode * 59 + this.ShowChangeRounding.GetHashCode();
                if (this.ShowInlinePanel != null)
                    hashCode = hashCode * 59 + this.ShowInlinePanel.GetHashCode();
                if (this.ShowLineItems != null)
                    hashCode = hashCode * 59 + this.ShowLineItems.GetHashCode();
                if (this.SelectableLineItems != null)
                    hashCode = hashCode * 59 + this.SelectableLineItems.GetHashCode();
                if (this.SelectableSaleReturnLineItems != null)
                    hashCode = hashCode * 59 + this.SelectableSaleReturnLineItems.GetHashCode();
                if (this.SaleReturnLineItemReturnTypes != null)
                    hashCode = hashCode * 59 + this.SaleReturnLineItemReturnTypes.GetHashCode();
                if (this.EditableLineItems != null)
                    hashCode = hashCode * 59 + this.EditableLineItems.GetHashCode();
                if (this.ShowFooter != null)
                    hashCode = hashCode * 59 + this.ShowFooter.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;
        }
    }

}
