/* 
 * 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>
    /// PositionOperationConfig &lt;p&gt;This configuration entity defines position related operations.&lt;/p&gt;
    /// </summary>
    [DataContract]
    public partial class ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig :  IEquatable<ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig>, IValidatableObject
    {
        /// <summary>
        /// &lt;p&gt;This parameter defines the price difference limit exceed action for positive items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the price difference limit exceed action for positive items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum PriceDifferenceLimitExceedActionEnum
        {
            
            /// <summary>
            /// Enum Warn for value: Warn
            /// </summary>
            [EnumMember(Value = "Warn")]
            Warn = 1,
            
            /// <summary>
            /// Enum Authorize for value: Authorize
            /// </summary>
            [EnumMember(Value = "Authorize")]
            Authorize = 2,
            
            /// <summary>
            /// Enum Forbid for value: Forbid
            /// </summary>
            [EnumMember(Value = "Forbid")]
            Forbid = 3,
            
            /// <summary>
            /// Enum Unchecked for value: Unchecked
            /// </summary>
            [EnumMember(Value = "Unchecked")]
            Unchecked = 4
        }

        /// <summary>
        /// &lt;p&gt;This parameter defines the price difference limit exceed action for positive items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the price difference limit exceed action for positive items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="priceDifferenceLimitExceedAction", EmitDefaultValue=false)]
        public PriceDifferenceLimitExceedActionEnum PriceDifferenceLimitExceedAction { get; set; }
        /// <summary>
        /// &lt;p&gt;This parameter defines the price difference limit exceed action for negative items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the price difference limit exceed action for negative items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum PriceNegDifferenceLimitExceedActionEnum
        {
            
            /// <summary>
            /// Enum Warn for value: Warn
            /// </summary>
            [EnumMember(Value = "Warn")]
            Warn = 1,
            
            /// <summary>
            /// Enum Authorize for value: Authorize
            /// </summary>
            [EnumMember(Value = "Authorize")]
            Authorize = 2,
            
            /// <summary>
            /// Enum Forbid for value: Forbid
            /// </summary>
            [EnumMember(Value = "Forbid")]
            Forbid = 3,
            
            /// <summary>
            /// Enum Unchecked for value: Unchecked
            /// </summary>
            [EnumMember(Value = "Unchecked")]
            Unchecked = 4
        }

        /// <summary>
        /// &lt;p&gt;This parameter defines the price difference limit exceed action for negative items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the price difference limit exceed action for negative items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="priceNegDifferenceLimitExceedAction", EmitDefaultValue=false)]
        public PriceNegDifferenceLimitExceedActionEnum PriceNegDifferenceLimitExceedAction { get; set; }
        /// <summary>
        /// &lt;p&gt;This parameter defines the close current position.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: ClosePositionAction [REQUIRED, IFPOSSIBLE, DISABLED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Required as &#39;required&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;IfPossible as &#39;ifPossible&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Disabled as &#39;disabled&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the close current position.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: ClosePositionAction [REQUIRED, IFPOSSIBLE, DISABLED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Required as &#39;required&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;IfPossible as &#39;ifPossible&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Disabled as &#39;disabled&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum CloseCurrentEnum
        {
            
            /// <summary>
            /// Enum Required for value: Required
            /// </summary>
            [EnumMember(Value = "Required")]
            Required = 1,
            
            /// <summary>
            /// Enum IfPossible for value: IfPossible
            /// </summary>
            [EnumMember(Value = "IfPossible")]
            IfPossible = 2,
            
            /// <summary>
            /// Enum Disabled for value: Disabled
            /// </summary>
            [EnumMember(Value = "Disabled")]
            Disabled = 3
        }

        /// <summary>
        /// &lt;p&gt;This parameter defines the close current position.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: ClosePositionAction [REQUIRED, IFPOSSIBLE, DISABLED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Required as &#39;required&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;IfPossible as &#39;ifPossible&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Disabled as &#39;disabled&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the close current position.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: ClosePositionAction [REQUIRED, IFPOSSIBLE, DISABLED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Required as &#39;required&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;IfPossible as &#39;ifPossible&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Disabled as &#39;disabled&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="closeCurrent", EmitDefaultValue=false)]
        public CloseCurrentEnum CloseCurrent { get; set; }
        /// <summary>
        /// &lt;p&gt;This parameter defines the close previous position.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: ClosePositionAction [REQUIRED, IFPOSSIBLE, DISABLED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Required as &#39;required&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;IfPossible as &#39;ifPossible&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Disabled as &#39;disabled&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the close previous position.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: ClosePositionAction [REQUIRED, IFPOSSIBLE, DISABLED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Required as &#39;required&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;IfPossible as &#39;ifPossible&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Disabled as &#39;disabled&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum ClosePreviousEnum
        {
            
            /// <summary>
            /// Enum Required for value: Required
            /// </summary>
            [EnumMember(Value = "Required")]
            Required = 1,
            
            /// <summary>
            /// Enum IfPossible for value: IfPossible
            /// </summary>
            [EnumMember(Value = "IfPossible")]
            IfPossible = 2,
            
            /// <summary>
            /// Enum Disabled for value: Disabled
            /// </summary>
            [EnumMember(Value = "Disabled")]
            Disabled = 3
        }

        /// <summary>
        /// &lt;p&gt;This parameter defines the close previous position.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: ClosePositionAction [REQUIRED, IFPOSSIBLE, DISABLED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Required as &#39;required&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;IfPossible as &#39;ifPossible&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Disabled as &#39;disabled&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the close previous position.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: ClosePositionAction [REQUIRED, IFPOSSIBLE, DISABLED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Required as &#39;required&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;IfPossible as &#39;ifPossible&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Disabled as &#39;disabled&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="closePrevious", EmitDefaultValue=false)]
        public ClosePreviousEnum ClosePrevious { get; set; }
        /// <summary>
        /// &lt;p&gt;This parameter indicates the input order for quantities.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: InputOrder [BEFOREORAFTER, BEFORE, AFTER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;BeforeOrAfter as &#39;beforeOrAfter&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Before as &#39;before&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;After as &#39;after&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter indicates the input order for quantities.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: InputOrder [BEFOREORAFTER, BEFORE, AFTER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;BeforeOrAfter as &#39;beforeOrAfter&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Before as &#39;before&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;After as &#39;after&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum QuantityInputOrderEnum
        {
            
            /// <summary>
            /// Enum BeforeOrAfter for value: BeforeOrAfter
            /// </summary>
            [EnumMember(Value = "BeforeOrAfter")]
            BeforeOrAfter = 1,
            
            /// <summary>
            /// Enum Before for value: Before
            /// </summary>
            [EnumMember(Value = "Before")]
            Before = 2,
            
            /// <summary>
            /// Enum After for value: After
            /// </summary>
            [EnumMember(Value = "After")]
            After = 3
        }

        /// <summary>
        /// &lt;p&gt;This parameter indicates the input order for quantities.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: InputOrder [BEFOREORAFTER, BEFORE, AFTER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;BeforeOrAfter as &#39;beforeOrAfter&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Before as &#39;before&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;After as &#39;after&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter indicates the input order for quantities.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: InputOrder [BEFOREORAFTER, BEFORE, AFTER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;BeforeOrAfter as &#39;beforeOrAfter&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Before as &#39;before&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;After as &#39;after&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="quantityInputOrder", EmitDefaultValue=false)]
        public QuantityInputOrderEnum QuantityInputOrder { get; set; }
        /// <summary>
        /// &lt;p&gt;This parameter indicates the input order for prices.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: InputOrder [BEFOREORAFTER, BEFORE, AFTER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;BeforeOrAfter as &#39;beforeOrAfter&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Before as &#39;before&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;After as &#39;after&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter indicates the input order for prices.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: InputOrder [BEFOREORAFTER, BEFORE, AFTER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;BeforeOrAfter as &#39;beforeOrAfter&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Before as &#39;before&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;After as &#39;after&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum PriceInputOrderEnum
        {
            
            /// <summary>
            /// Enum BeforeOrAfter for value: BeforeOrAfter
            /// </summary>
            [EnumMember(Value = "BeforeOrAfter")]
            BeforeOrAfter = 1,
            
            /// <summary>
            /// Enum Before for value: Before
            /// </summary>
            [EnumMember(Value = "Before")]
            Before = 2,
            
            /// <summary>
            /// Enum After for value: After
            /// </summary>
            [EnumMember(Value = "After")]
            After = 3
        }

        /// <summary>
        /// &lt;p&gt;This parameter indicates the input order for prices.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: InputOrder [BEFOREORAFTER, BEFORE, AFTER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;BeforeOrAfter as &#39;beforeOrAfter&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Before as &#39;before&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;After as &#39;after&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter indicates the input order for prices.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: InputOrder [BEFOREORAFTER, BEFORE, AFTER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;BeforeOrAfter as &#39;beforeOrAfter&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Before as &#39;before&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;After as &#39;after&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="priceInputOrder", EmitDefaultValue=false)]
        public PriceInputOrderEnum PriceInputOrder { get; set; }
        /// <summary>
        /// &lt;p&gt;This parameter defines the quantity limit exceed action.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the quantity limit exceed action.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum QuantityLimitExceedActionEnum
        {
            
            /// <summary>
            /// Enum Warn for value: Warn
            /// </summary>
            [EnumMember(Value = "Warn")]
            Warn = 1,
            
            /// <summary>
            /// Enum Authorize for value: Authorize
            /// </summary>
            [EnumMember(Value = "Authorize")]
            Authorize = 2,
            
            /// <summary>
            /// Enum Forbid for value: Forbid
            /// </summary>
            [EnumMember(Value = "Forbid")]
            Forbid = 3,
            
            /// <summary>
            /// Enum Unchecked for value: Unchecked
            /// </summary>
            [EnumMember(Value = "Unchecked")]
            Unchecked = 4
        }

        /// <summary>
        /// &lt;p&gt;This parameter defines the quantity limit exceed action.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the quantity limit exceed action.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="quantityLimitExceedAction", EmitDefaultValue=false)]
        public QuantityLimitExceedActionEnum QuantityLimitExceedAction { get; set; }
        /// <summary>
        /// &lt;p&gt;This parameter defines the amount limit exceed action.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the amount limit exceed action.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum AmountLimitExceedActionEnum
        {
            
            /// <summary>
            /// Enum Warn for value: Warn
            /// </summary>
            [EnumMember(Value = "Warn")]
            Warn = 1,
            
            /// <summary>
            /// Enum Authorize for value: Authorize
            /// </summary>
            [EnumMember(Value = "Authorize")]
            Authorize = 2,
            
            /// <summary>
            /// Enum Forbid for value: Forbid
            /// </summary>
            [EnumMember(Value = "Forbid")]
            Forbid = 3,
            
            /// <summary>
            /// Enum Unchecked for value: Unchecked
            /// </summary>
            [EnumMember(Value = "Unchecked")]
            Unchecked = 4
        }

        /// <summary>
        /// &lt;p&gt;This parameter defines the amount limit exceed action.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the amount limit exceed action.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="amountLimitExceedAction", EmitDefaultValue=false)]
        public AmountLimitExceedActionEnum AmountLimitExceedAction { get; set; }
        /// <summary>
        /// &lt;p&gt;This parameter defines the deviation with respect to the previously valid price in case of sales line items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: DeviationType [ALL, EQUALORLESS, EQUALORGREATER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;All as &#39;all&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrLess as &#39;equalOrLess&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrGreater as &#39;equalOrGreater&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the deviation with respect to the previously valid price in case of sales line items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: DeviationType [ALL, EQUALORLESS, EQUALORGREATER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;All as &#39;all&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrLess as &#39;equalOrLess&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrGreater as &#39;equalOrGreater&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum PriceDeviationTypeEnum
        {
            
            /// <summary>
            /// Enum All for value: All
            /// </summary>
            [EnumMember(Value = "All")]
            All = 1,
            
            /// <summary>
            /// Enum EqualOrLess for value: EqualOrLess
            /// </summary>
            [EnumMember(Value = "EqualOrLess")]
            EqualOrLess = 2,
            
            /// <summary>
            /// Enum EqualOrGreater for value: EqualOrGreater
            /// </summary>
            [EnumMember(Value = "EqualOrGreater")]
            EqualOrGreater = 3
        }

        /// <summary>
        /// &lt;p&gt;This parameter defines the deviation with respect to the previously valid price in case of sales line items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: DeviationType [ALL, EQUALORLESS, EQUALORGREATER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;All as &#39;all&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrLess as &#39;equalOrLess&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrGreater as &#39;equalOrGreater&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the deviation with respect to the previously valid price in case of sales line items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: DeviationType [ALL, EQUALORLESS, EQUALORGREATER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;All as &#39;all&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrLess as &#39;equalOrLess&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrGreater as &#39;equalOrGreater&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="priceDeviationType", EmitDefaultValue=false)]
        public PriceDeviationTypeEnum PriceDeviationType { get; set; }
        /// <summary>
        /// &lt;p&gt;This parameter defines the deviation with respect to the previously valid price in case of return line items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: DeviationType [ALL, EQUALORLESS, EQUALORGREATER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;All as &#39;all&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrLess as &#39;equalOrLess&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrGreater as &#39;equalOrGreater&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the deviation with respect to the previously valid price in case of return line items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: DeviationType [ALL, EQUALORLESS, EQUALORGREATER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;All as &#39;all&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrLess as &#39;equalOrLess&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrGreater as &#39;equalOrGreater&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum PriceNegDeviationTypeEnum
        {
            
            /// <summary>
            /// Enum All for value: All
            /// </summary>
            [EnumMember(Value = "All")]
            All = 1,
            
            /// <summary>
            /// Enum EqualOrLess for value: EqualOrLess
            /// </summary>
            [EnumMember(Value = "EqualOrLess")]
            EqualOrLess = 2,
            
            /// <summary>
            /// Enum EqualOrGreater for value: EqualOrGreater
            /// </summary>
            [EnumMember(Value = "EqualOrGreater")]
            EqualOrGreater = 3
        }

        /// <summary>
        /// &lt;p&gt;This parameter defines the deviation with respect to the previously valid price in case of return line items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: DeviationType [ALL, EQUALORLESS, EQUALORGREATER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;All as &#39;all&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrLess as &#39;equalOrLess&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrGreater as &#39;equalOrGreater&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the deviation with respect to the previously valid price in case of return line items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: DeviationType [ALL, EQUALORLESS, EQUALORGREATER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;All as &#39;all&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrLess as &#39;equalOrLess&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrGreater as &#39;equalOrGreater&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="priceNegDeviationType", EmitDefaultValue=false)]
        public PriceNegDeviationTypeEnum PriceNegDeviationType { get; set; }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig" /> class.
        /// </summary>
        [JsonConstructorAttribute]
        protected ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig() { }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig" /> class.
        /// </summary>
        /// <param name="forceQuantityInput">&lt;p&gt;This parameter indicates whether the quantity input for each item is forced.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="pricePositionLimit">&lt;p&gt;This parameter defines the price position limit. Default set to 100,000.00. -1 means disabled.&lt;/p&gt; (required).</param>
        /// <param name="pricePositionZeroAllowed">&lt;p&gt;This parameter defines whether positions with zero price are allowed.&lt;/p&gt; (required).</param>
        /// <param name="priceTransactionLimit">&lt;p&gt;This parameter defines the price transaction limit. Default set to 100,000.00. -1 means disabled.&lt;br /&gt; @deprecated since 5.20.0 - is not longer used.&lt;/p&gt; (required).</param>
        /// <param name="priceDifferencePercentPositionLimit">&lt;p&gt;This parameter defines the price difference limit in percent.&lt;/p&gt; (required).</param>
        /// <param name="priceDifferenceAbsolutePositionLimit">&lt;p&gt;This parameter defines the price difference limit as an absolute value.&lt;/p&gt; (required).</param>
        /// <param name="priceDifferenceLimitExceedAction">&lt;p&gt;This parameter defines the price difference limit exceed action for positive items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="priceNegDifferenceLimitExceedAction">&lt;p&gt;This parameter defines the price difference limit exceed action for negative items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="closeCurrent">&lt;p&gt;This parameter defines the close current position.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: ClosePositionAction [REQUIRED, IFPOSSIBLE, DISABLED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Required as &#39;required&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;IfPossible as &#39;ifPossible&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Disabled as &#39;disabled&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="closePrevious">&lt;p&gt;This parameter defines the close previous position.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: ClosePositionAction [REQUIRED, IFPOSSIBLE, DISABLED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Required as &#39;required&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;IfPossible as &#39;ifPossible&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Disabled as &#39;disabled&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="filterResult">&lt;p&gt;This parameter indicates whether results can be filtered.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="allowedWithWeight">&lt;p&gt;This parameter indicates whether the single quantity for a weight item is allowed. It has the flag &#39;ALLOWED_WITH_WEIGHT&#39;.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="allowedWithLength">&lt;p&gt;This parameter indicates whether the single quantity for a length item is allowed. It has the flag &#39;ALLOWED_WITH_LENGTH&#39;.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="allowedWithArea">&lt;p&gt;This parameter indicates whether the single quantity for an area item is allowed. It has the flag &#39;ALLOWED_WITH_AREA&#39;.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="allowedWithVolume">&lt;p&gt;This parameter indicates whether the single quantity for a volume item is allowed. It has the flag &#39;ALLOWED_WITH_VOLUME&#39;.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="allowedWithMeasure">&lt;p&gt;This parameter indicates whether the single quantity for a measure item is allowed. It has the flag &#39;ALLOWED_WITH_MEASURE&#39;.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt; (required).</param>
        /// <param name="maximumQuantity">&lt;p&gt;This parameter defines the maximum single quantity.&lt;/p&gt; (required).</param>
        /// <param name="minimumQuantity">&lt;p&gt;This parameter defines the minimum single quantity.&lt;/p&gt;.</param>
        /// <param name="quantityInputOrder">&lt;p&gt;This parameter indicates the input order for quantities.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: InputOrder [BEFOREORAFTER, BEFORE, AFTER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;BeforeOrAfter as &#39;beforeOrAfter&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Before as &#39;before&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;After as &#39;after&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="priceInputOrder">&lt;p&gt;This parameter indicates the input order for prices.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: InputOrder [BEFOREORAFTER, BEFORE, AFTER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;BeforeOrAfter as &#39;beforeOrAfter&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Before as &#39;before&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;After as &#39;after&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="quantityLimitExceedAction">&lt;p&gt;This parameter defines the quantity limit exceed action.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="amountLimitExceedAction">&lt;p&gt;This parameter defines the amount limit exceed action.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: LimitExceedAction [WARN, AUTHORIZE, FORBID, UNCHECKED]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;Warn as &#39;warn&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Authorize as &#39;authorize&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Forbid as &#39;forbid&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;Unchecked as &#39;unchecked&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="weightUnitFactor">&lt;p&gt;This parameter defines the multiplication factor for weight quantities.&lt;/p&gt;.</param>
        /// <param name="measureUnitFactor">&lt;p&gt;This parameter defines the multiplication factor for dimensions quantities.&lt;/p&gt;.</param>
        /// <param name="priceDeviationType">&lt;p&gt;This parameter defines the deviation with respect to the previously valid price in case of sales line items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: DeviationType [ALL, EQUALORLESS, EQUALORGREATER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;All as &#39;all&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrLess as &#39;equalOrLess&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrGreater as &#39;equalOrGreater&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="priceNegDeviationType">&lt;p&gt;This parameter defines the deviation with respect to the previously valid price in case of return line items.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;value: DeviationType [ALL, EQUALORLESS, EQUALORGREATER]&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;All as &#39;all&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrLess as &#39;equalOrLess&#39;,&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EqualOrGreater as &#39;equalOrGreater&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</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 ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig(bool? forceQuantityInput = default(bool?), double? pricePositionLimit = default(double?), bool? pricePositionZeroAllowed = default(bool?), double? priceTransactionLimit = default(double?), double? priceDifferencePercentPositionLimit = default(double?), double? priceDifferenceAbsolutePositionLimit = default(double?), PriceDifferenceLimitExceedActionEnum priceDifferenceLimitExceedAction = default(PriceDifferenceLimitExceedActionEnum), PriceNegDifferenceLimitExceedActionEnum priceNegDifferenceLimitExceedAction = default(PriceNegDifferenceLimitExceedActionEnum), CloseCurrentEnum closeCurrent = default(CloseCurrentEnum), ClosePreviousEnum closePrevious = default(ClosePreviousEnum), bool? filterResult = default(bool?), bool? allowedWithWeight = default(bool?), bool? allowedWithLength = default(bool?), bool? allowedWithArea = default(bool?), bool? allowedWithVolume = default(bool?), bool? allowedWithMeasure = default(bool?), int? maximumQuantity = default(int?), int? minimumQuantity = default(int?), QuantityInputOrderEnum quantityInputOrder = default(QuantityInputOrderEnum), PriceInputOrderEnum priceInputOrder = default(PriceInputOrderEnum), QuantityLimitExceedActionEnum quantityLimitExceedAction = default(QuantityLimitExceedActionEnum), AmountLimitExceedActionEnum amountLimitExceedAction = default(AmountLimitExceedActionEnum), double? weightUnitFactor = default(double?), double? measureUnitFactor = default(double?), PriceDeviationTypeEnum priceDeviationType = default(PriceDeviationTypeEnum), PriceNegDeviationTypeEnum priceNegDeviationType = default(PriceNegDeviationTypeEnum), 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 "forceQuantityInput" is required (not null)
            if (forceQuantityInput == null)
            {
                throw new InvalidDataException("forceQuantityInput is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.ForceQuantityInput = forceQuantityInput;
            }
            // to ensure "pricePositionLimit" is required (not null)
            if (pricePositionLimit == null)
            {
                throw new InvalidDataException("pricePositionLimit is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.PricePositionLimit = pricePositionLimit;
            }
            // to ensure "pricePositionZeroAllowed" is required (not null)
            if (pricePositionZeroAllowed == null)
            {
                throw new InvalidDataException("pricePositionZeroAllowed is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.PricePositionZeroAllowed = pricePositionZeroAllowed;
            }
            // to ensure "priceTransactionLimit" is required (not null)
            if (priceTransactionLimit == null)
            {
                throw new InvalidDataException("priceTransactionLimit is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.PriceTransactionLimit = priceTransactionLimit;
            }
            // to ensure "priceDifferencePercentPositionLimit" is required (not null)
            if (priceDifferencePercentPositionLimit == null)
            {
                throw new InvalidDataException("priceDifferencePercentPositionLimit is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.PriceDifferencePercentPositionLimit = priceDifferencePercentPositionLimit;
            }
            // to ensure "priceDifferenceAbsolutePositionLimit" is required (not null)
            if (priceDifferenceAbsolutePositionLimit == null)
            {
                throw new InvalidDataException("priceDifferenceAbsolutePositionLimit is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.PriceDifferenceAbsolutePositionLimit = priceDifferenceAbsolutePositionLimit;
            }
            // to ensure "priceDifferenceLimitExceedAction" is required (not null)
            if (priceDifferenceLimitExceedAction == null)
            {
                throw new InvalidDataException("priceDifferenceLimitExceedAction is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.PriceDifferenceLimitExceedAction = priceDifferenceLimitExceedAction;
            }
            // to ensure "priceNegDifferenceLimitExceedAction" is required (not null)
            if (priceNegDifferenceLimitExceedAction == null)
            {
                throw new InvalidDataException("priceNegDifferenceLimitExceedAction is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.PriceNegDifferenceLimitExceedAction = priceNegDifferenceLimitExceedAction;
            }
            // to ensure "closeCurrent" is required (not null)
            if (closeCurrent == null)
            {
                throw new InvalidDataException("closeCurrent is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.CloseCurrent = closeCurrent;
            }
            // to ensure "closePrevious" is required (not null)
            if (closePrevious == null)
            {
                throw new InvalidDataException("closePrevious is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.ClosePrevious = closePrevious;
            }
            // to ensure "filterResult" is required (not null)
            if (filterResult == null)
            {
                throw new InvalidDataException("filterResult is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.FilterResult = filterResult;
            }
            // to ensure "allowedWithWeight" is required (not null)
            if (allowedWithWeight == null)
            {
                throw new InvalidDataException("allowedWithWeight is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.AllowedWithWeight = allowedWithWeight;
            }
            // to ensure "allowedWithLength" is required (not null)
            if (allowedWithLength == null)
            {
                throw new InvalidDataException("allowedWithLength is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.AllowedWithLength = allowedWithLength;
            }
            // to ensure "allowedWithArea" is required (not null)
            if (allowedWithArea == null)
            {
                throw new InvalidDataException("allowedWithArea is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.AllowedWithArea = allowedWithArea;
            }
            // to ensure "allowedWithVolume" is required (not null)
            if (allowedWithVolume == null)
            {
                throw new InvalidDataException("allowedWithVolume is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.AllowedWithVolume = allowedWithVolume;
            }
            // to ensure "allowedWithMeasure" is required (not null)
            if (allowedWithMeasure == null)
            {
                throw new InvalidDataException("allowedWithMeasure is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.AllowedWithMeasure = allowedWithMeasure;
            }
            // to ensure "maximumQuantity" is required (not null)
            if (maximumQuantity == null)
            {
                throw new InvalidDataException("maximumQuantity is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.MaximumQuantity = maximumQuantity;
            }
            // to ensure "quantityInputOrder" is required (not null)
            if (quantityInputOrder == null)
            {
                throw new InvalidDataException("quantityInputOrder is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.QuantityInputOrder = quantityInputOrder;
            }
            // to ensure "priceInputOrder" is required (not null)
            if (priceInputOrder == null)
            {
                throw new InvalidDataException("priceInputOrder is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.PriceInputOrder = priceInputOrder;
            }
            // to ensure "quantityLimitExceedAction" is required (not null)
            if (quantityLimitExceedAction == null)
            {
                throw new InvalidDataException("quantityLimitExceedAction is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.QuantityLimitExceedAction = quantityLimitExceedAction;
            }
            // to ensure "amountLimitExceedAction" is required (not null)
            if (amountLimitExceedAction == null)
            {
                throw new InvalidDataException("amountLimitExceedAction is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.AmountLimitExceedAction = amountLimitExceedAction;
            }
            // to ensure "priceDeviationType" is required (not null)
            if (priceDeviationType == null)
            {
                throw new InvalidDataException("priceDeviationType is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.PriceDeviationType = priceDeviationType;
            }
            // to ensure "priceNegDeviationType" is required (not null)
            if (priceNegDeviationType == null)
            {
                throw new InvalidDataException("priceNegDeviationType is a required property for ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig and cannot be null");
            }
            else
            {
                this.PriceNegDeviationType = priceNegDeviationType;
            }
            this.MinimumQuantity = minimumQuantity;
            this.WeightUnitFactor = weightUnitFactor;
            this.MeasureUnitFactor = measureUnitFactor;
            this.XXCustom08 = xXCustom08;
            this.XXCustom10 = xXCustom10;
            this.XXCustom09 = xXCustom09;
            this.XXCustom07 = xXCustom07;
            this.XXCustom05 = xXCustom05;
            this.XXCustom06 = xXCustom06;
            this.XXCustom11 = xXCustom11;
            this.XXCustom12 = xXCustom12;
            this.XXCustom13 = xXCustom13;
            this.XXCustom14 = xXCustom14;
            this.XXCustom15 = xXCustom15;
            this.XXCustom03 = xXCustom03;
            this.XXCustom02 = xXCustom02;
            this.XXCustom04 = xXCustom04;
            this.XXCustom01 = xXCustom01;
        }
        
        /// <summary>
        /// &lt;p&gt;This parameter indicates whether the quantity input for each item is forced.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter indicates whether the quantity input for each item is forced.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="forceQuantityInput", EmitDefaultValue=false)]
        public bool? ForceQuantityInput { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter defines the price position limit. Default set to 100,000.00. -1 means disabled.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the price position limit. Default set to 100,000.00. -1 means disabled.&lt;/p&gt;</value>
        [DataMember(Name="pricePositionLimit", EmitDefaultValue=false)]
        public double? PricePositionLimit { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter defines whether positions with zero price are allowed.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines whether positions with zero price are allowed.&lt;/p&gt;</value>
        [DataMember(Name="pricePositionZeroAllowed", EmitDefaultValue=false)]
        public bool? PricePositionZeroAllowed { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter defines the price transaction limit. Default set to 100,000.00. -1 means disabled.&lt;br /&gt; @deprecated since 5.20.0 - is not longer used.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the price transaction limit. Default set to 100,000.00. -1 means disabled.&lt;br /&gt; @deprecated since 5.20.0 - is not longer used.&lt;/p&gt;</value>
        [DataMember(Name="priceTransactionLimit", EmitDefaultValue=false)]
        public double? PriceTransactionLimit { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter defines the price difference limit in percent.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the price difference limit in percent.&lt;/p&gt;</value>
        [DataMember(Name="priceDifferencePercentPositionLimit", EmitDefaultValue=false)]
        public double? PriceDifferencePercentPositionLimit { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter defines the price difference limit as an absolute value.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the price difference limit as an absolute value.&lt;/p&gt;</value>
        [DataMember(Name="priceDifferenceAbsolutePositionLimit", EmitDefaultValue=false)]
        public double? PriceDifferenceAbsolutePositionLimit { get; set; }





        /// <summary>
        /// &lt;p&gt;This parameter indicates whether results can be filtered.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter indicates whether results can be filtered.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="filterResult", EmitDefaultValue=false)]
        public bool? FilterResult { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter indicates whether the single quantity for a weight item is allowed. It has the flag &#39;ALLOWED_WITH_WEIGHT&#39;.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter indicates whether the single quantity for a weight item is allowed. It has the flag &#39;ALLOWED_WITH_WEIGHT&#39;.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="allowedWithWeight", EmitDefaultValue=false)]
        public bool? AllowedWithWeight { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter indicates whether the single quantity for a length item is allowed. It has the flag &#39;ALLOWED_WITH_LENGTH&#39;.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter indicates whether the single quantity for a length item is allowed. It has the flag &#39;ALLOWED_WITH_LENGTH&#39;.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="allowedWithLength", EmitDefaultValue=false)]
        public bool? AllowedWithLength { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter indicates whether the single quantity for an area item is allowed. It has the flag &#39;ALLOWED_WITH_AREA&#39;.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter indicates whether the single quantity for an area item is allowed. It has the flag &#39;ALLOWED_WITH_AREA&#39;.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="allowedWithArea", EmitDefaultValue=false)]
        public bool? AllowedWithArea { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter indicates whether the single quantity for a volume item is allowed. It has the flag &#39;ALLOWED_WITH_VOLUME&#39;.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter indicates whether the single quantity for a volume item is allowed. It has the flag &#39;ALLOWED_WITH_VOLUME&#39;.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="allowedWithVolume", EmitDefaultValue=false)]
        public bool? AllowedWithVolume { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter indicates whether the single quantity for a measure item is allowed. It has the flag &#39;ALLOWED_WITH_MEASURE&#39;.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter indicates whether the single quantity for a measure item is allowed. It has the flag &#39;ALLOWED_WITH_MEASURE&#39;.&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;values: true, false&lt;br /&gt;&lt;/pre&gt;</value>
        [DataMember(Name="allowedWithMeasure", EmitDefaultValue=false)]
        public bool? AllowedWithMeasure { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter defines the maximum single quantity.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the maximum single quantity.&lt;/p&gt;</value>
        [DataMember(Name="maximumQuantity", EmitDefaultValue=false)]
        public int? MaximumQuantity { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter defines the minimum single quantity.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the minimum single quantity.&lt;/p&gt;</value>
        [DataMember(Name="minimumQuantity", EmitDefaultValue=false)]
        public int? MinimumQuantity { get; set; }





        /// <summary>
        /// &lt;p&gt;This parameter defines the multiplication factor for weight quantities.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the multiplication factor for weight quantities.&lt;/p&gt;</value>
        [DataMember(Name="weightUnitFactor", EmitDefaultValue=false)]
        public double? WeightUnitFactor { get; set; }

        /// <summary>
        /// &lt;p&gt;This parameter defines the multiplication factor for dimensions quantities.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the multiplication factor for dimensions quantities.&lt;/p&gt;</value>
        [DataMember(Name="measureUnitFactor", EmitDefaultValue=false)]
        public double? MeasureUnitFactor { 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 ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig {\n");
            sb.Append("  ForceQuantityInput: ").Append(ForceQuantityInput).Append("\n");
            sb.Append("  PricePositionLimit: ").Append(PricePositionLimit).Append("\n");
            sb.Append("  PricePositionZeroAllowed: ").Append(PricePositionZeroAllowed).Append("\n");
            sb.Append("  PriceTransactionLimit: ").Append(PriceTransactionLimit).Append("\n");
            sb.Append("  PriceDifferencePercentPositionLimit: ").Append(PriceDifferencePercentPositionLimit).Append("\n");
            sb.Append("  PriceDifferenceAbsolutePositionLimit: ").Append(PriceDifferenceAbsolutePositionLimit).Append("\n");
            sb.Append("  PriceDifferenceLimitExceedAction: ").Append(PriceDifferenceLimitExceedAction).Append("\n");
            sb.Append("  PriceNegDifferenceLimitExceedAction: ").Append(PriceNegDifferenceLimitExceedAction).Append("\n");
            sb.Append("  CloseCurrent: ").Append(CloseCurrent).Append("\n");
            sb.Append("  ClosePrevious: ").Append(ClosePrevious).Append("\n");
            sb.Append("  FilterResult: ").Append(FilterResult).Append("\n");
            sb.Append("  AllowedWithWeight: ").Append(AllowedWithWeight).Append("\n");
            sb.Append("  AllowedWithLength: ").Append(AllowedWithLength).Append("\n");
            sb.Append("  AllowedWithArea: ").Append(AllowedWithArea).Append("\n");
            sb.Append("  AllowedWithVolume: ").Append(AllowedWithVolume).Append("\n");
            sb.Append("  AllowedWithMeasure: ").Append(AllowedWithMeasure).Append("\n");
            sb.Append("  MaximumQuantity: ").Append(MaximumQuantity).Append("\n");
            sb.Append("  MinimumQuantity: ").Append(MinimumQuantity).Append("\n");
            sb.Append("  QuantityInputOrder: ").Append(QuantityInputOrder).Append("\n");
            sb.Append("  PriceInputOrder: ").Append(PriceInputOrder).Append("\n");
            sb.Append("  QuantityLimitExceedAction: ").Append(QuantityLimitExceedAction).Append("\n");
            sb.Append("  AmountLimitExceedAction: ").Append(AmountLimitExceedAction).Append("\n");
            sb.Append("  WeightUnitFactor: ").Append(WeightUnitFactor).Append("\n");
            sb.Append("  MeasureUnitFactor: ").Append(MeasureUnitFactor).Append("\n");
            sb.Append("  PriceDeviationType: ").Append(PriceDeviationType).Append("\n");
            sb.Append("  PriceNegDeviationType: ").Append(PriceNegDeviationType).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 ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig);
        }

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

            return 
                (
                    this.ForceQuantityInput == input.ForceQuantityInput ||
                    (this.ForceQuantityInput != null &&
                    this.ForceQuantityInput.Equals(input.ForceQuantityInput))
                ) && 
                (
                    this.PricePositionLimit == input.PricePositionLimit ||
                    (this.PricePositionLimit != null &&
                    this.PricePositionLimit.Equals(input.PricePositionLimit))
                ) && 
                (
                    this.PricePositionZeroAllowed == input.PricePositionZeroAllowed ||
                    (this.PricePositionZeroAllowed != null &&
                    this.PricePositionZeroAllowed.Equals(input.PricePositionZeroAllowed))
                ) && 
                (
                    this.PriceTransactionLimit == input.PriceTransactionLimit ||
                    (this.PriceTransactionLimit != null &&
                    this.PriceTransactionLimit.Equals(input.PriceTransactionLimit))
                ) && 
                (
                    this.PriceDifferencePercentPositionLimit == input.PriceDifferencePercentPositionLimit ||
                    (this.PriceDifferencePercentPositionLimit != null &&
                    this.PriceDifferencePercentPositionLimit.Equals(input.PriceDifferencePercentPositionLimit))
                ) && 
                (
                    this.PriceDifferenceAbsolutePositionLimit == input.PriceDifferenceAbsolutePositionLimit ||
                    (this.PriceDifferenceAbsolutePositionLimit != null &&
                    this.PriceDifferenceAbsolutePositionLimit.Equals(input.PriceDifferenceAbsolutePositionLimit))
                ) && 
                (
                    this.PriceDifferenceLimitExceedAction == input.PriceDifferenceLimitExceedAction ||
                    (this.PriceDifferenceLimitExceedAction != null &&
                    this.PriceDifferenceLimitExceedAction.Equals(input.PriceDifferenceLimitExceedAction))
                ) && 
                (
                    this.PriceNegDifferenceLimitExceedAction == input.PriceNegDifferenceLimitExceedAction ||
                    (this.PriceNegDifferenceLimitExceedAction != null &&
                    this.PriceNegDifferenceLimitExceedAction.Equals(input.PriceNegDifferenceLimitExceedAction))
                ) && 
                (
                    this.CloseCurrent == input.CloseCurrent ||
                    (this.CloseCurrent != null &&
                    this.CloseCurrent.Equals(input.CloseCurrent))
                ) && 
                (
                    this.ClosePrevious == input.ClosePrevious ||
                    (this.ClosePrevious != null &&
                    this.ClosePrevious.Equals(input.ClosePrevious))
                ) && 
                (
                    this.FilterResult == input.FilterResult ||
                    (this.FilterResult != null &&
                    this.FilterResult.Equals(input.FilterResult))
                ) && 
                (
                    this.AllowedWithWeight == input.AllowedWithWeight ||
                    (this.AllowedWithWeight != null &&
                    this.AllowedWithWeight.Equals(input.AllowedWithWeight))
                ) && 
                (
                    this.AllowedWithLength == input.AllowedWithLength ||
                    (this.AllowedWithLength != null &&
                    this.AllowedWithLength.Equals(input.AllowedWithLength))
                ) && 
                (
                    this.AllowedWithArea == input.AllowedWithArea ||
                    (this.AllowedWithArea != null &&
                    this.AllowedWithArea.Equals(input.AllowedWithArea))
                ) && 
                (
                    this.AllowedWithVolume == input.AllowedWithVolume ||
                    (this.AllowedWithVolume != null &&
                    this.AllowedWithVolume.Equals(input.AllowedWithVolume))
                ) && 
                (
                    this.AllowedWithMeasure == input.AllowedWithMeasure ||
                    (this.AllowedWithMeasure != null &&
                    this.AllowedWithMeasure.Equals(input.AllowedWithMeasure))
                ) && 
                (
                    this.MaximumQuantity == input.MaximumQuantity ||
                    (this.MaximumQuantity != null &&
                    this.MaximumQuantity.Equals(input.MaximumQuantity))
                ) && 
                (
                    this.MinimumQuantity == input.MinimumQuantity ||
                    (this.MinimumQuantity != null &&
                    this.MinimumQuantity.Equals(input.MinimumQuantity))
                ) && 
                (
                    this.QuantityInputOrder == input.QuantityInputOrder ||
                    (this.QuantityInputOrder != null &&
                    this.QuantityInputOrder.Equals(input.QuantityInputOrder))
                ) && 
                (
                    this.PriceInputOrder == input.PriceInputOrder ||
                    (this.PriceInputOrder != null &&
                    this.PriceInputOrder.Equals(input.PriceInputOrder))
                ) && 
                (
                    this.QuantityLimitExceedAction == input.QuantityLimitExceedAction ||
                    (this.QuantityLimitExceedAction != null &&
                    this.QuantityLimitExceedAction.Equals(input.QuantityLimitExceedAction))
                ) && 
                (
                    this.AmountLimitExceedAction == input.AmountLimitExceedAction ||
                    (this.AmountLimitExceedAction != null &&
                    this.AmountLimitExceedAction.Equals(input.AmountLimitExceedAction))
                ) && 
                (
                    this.WeightUnitFactor == input.WeightUnitFactor ||
                    (this.WeightUnitFactor != null &&
                    this.WeightUnitFactor.Equals(input.WeightUnitFactor))
                ) && 
                (
                    this.MeasureUnitFactor == input.MeasureUnitFactor ||
                    (this.MeasureUnitFactor != null &&
                    this.MeasureUnitFactor.Equals(input.MeasureUnitFactor))
                ) && 
                (
                    this.PriceDeviationType == input.PriceDeviationType ||
                    (this.PriceDeviationType != null &&
                    this.PriceDeviationType.Equals(input.PriceDeviationType))
                ) && 
                (
                    this.PriceNegDeviationType == input.PriceNegDeviationType ||
                    (this.PriceNegDeviationType != null &&
                    this.PriceNegDeviationType.Equals(input.PriceNegDeviationType))
                ) && 
                (
                    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.ForceQuantityInput != null)
                    hashCode = hashCode * 59 + this.ForceQuantityInput.GetHashCode();
                if (this.PricePositionLimit != null)
                    hashCode = hashCode * 59 + this.PricePositionLimit.GetHashCode();
                if (this.PricePositionZeroAllowed != null)
                    hashCode = hashCode * 59 + this.PricePositionZeroAllowed.GetHashCode();
                if (this.PriceTransactionLimit != null)
                    hashCode = hashCode * 59 + this.PriceTransactionLimit.GetHashCode();
                if (this.PriceDifferencePercentPositionLimit != null)
                    hashCode = hashCode * 59 + this.PriceDifferencePercentPositionLimit.GetHashCode();
                if (this.PriceDifferenceAbsolutePositionLimit != null)
                    hashCode = hashCode * 59 + this.PriceDifferenceAbsolutePositionLimit.GetHashCode();
                if (this.PriceDifferenceLimitExceedAction != null)
                    hashCode = hashCode * 59 + this.PriceDifferenceLimitExceedAction.GetHashCode();
                if (this.PriceNegDifferenceLimitExceedAction != null)
                    hashCode = hashCode * 59 + this.PriceNegDifferenceLimitExceedAction.GetHashCode();
                if (this.CloseCurrent != null)
                    hashCode = hashCode * 59 + this.CloseCurrent.GetHashCode();
                if (this.ClosePrevious != null)
                    hashCode = hashCode * 59 + this.ClosePrevious.GetHashCode();
                if (this.FilterResult != null)
                    hashCode = hashCode * 59 + this.FilterResult.GetHashCode();
                if (this.AllowedWithWeight != null)
                    hashCode = hashCode * 59 + this.AllowedWithWeight.GetHashCode();
                if (this.AllowedWithLength != null)
                    hashCode = hashCode * 59 + this.AllowedWithLength.GetHashCode();
                if (this.AllowedWithArea != null)
                    hashCode = hashCode * 59 + this.AllowedWithArea.GetHashCode();
                if (this.AllowedWithVolume != null)
                    hashCode = hashCode * 59 + this.AllowedWithVolume.GetHashCode();
                if (this.AllowedWithMeasure != null)
                    hashCode = hashCode * 59 + this.AllowedWithMeasure.GetHashCode();
                if (this.MaximumQuantity != null)
                    hashCode = hashCode * 59 + this.MaximumQuantity.GetHashCode();
                if (this.MinimumQuantity != null)
                    hashCode = hashCode * 59 + this.MinimumQuantity.GetHashCode();
                if (this.QuantityInputOrder != null)
                    hashCode = hashCode * 59 + this.QuantityInputOrder.GetHashCode();
                if (this.PriceInputOrder != null)
                    hashCode = hashCode * 59 + this.PriceInputOrder.GetHashCode();
                if (this.QuantityLimitExceedAction != null)
                    hashCode = hashCode * 59 + this.QuantityLimitExceedAction.GetHashCode();
                if (this.AmountLimitExceedAction != null)
                    hashCode = hashCode * 59 + this.AmountLimitExceedAction.GetHashCode();
                if (this.WeightUnitFactor != null)
                    hashCode = hashCode * 59 + this.WeightUnitFactor.GetHashCode();
                if (this.MeasureUnitFactor != null)
                    hashCode = hashCode * 59 + this.MeasureUnitFactor.GetHashCode();
                if (this.PriceDeviationType != null)
                    hashCode = hashCode * 59 + this.PriceDeviationType.GetHashCode();
                if (this.PriceNegDeviationType != null)
                    hashCode = hashCode * 59 + this.PriceNegDeviationType.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;
        }
    }

}
