/* 
 * 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>
    /// PromotionConditionRuleSO &lt;p&gt;Promotion condition rule&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Promotion.Condition.Rule&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
    /// </summary>
    [DataContract]
    public partial class ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO :  IEquatable<ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO>, IValidatableObject
    {
        /// <summary>
        /// &lt;p&gt;This is a special code that determines when, during the entry of a sale transaction, this rule will be applied. For example a price change rule may be applied on a line item by line item basis (which is DETAIL TIME), a price change rule may be triggered after a transaction is totaled - - but before tax and tender entry (i.e. MERCHANDISE SUBTOTAL TIME).&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;line item discount, calculated after each line item („PO“)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;line item discount, calculated after subtotal (“PC”)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;transaction discount, calculated after each line item (“SP”)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;transaction discount, calculated after subtotal („SU“)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Promotion.Condition.Rule.GlobalData.TransactionControlCode&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.TransactionControlCode&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This is a special code that determines when, during the entry of a sale transaction, this rule will be applied. For example a price change rule may be applied on a line item by line item basis (which is DETAIL TIME), a price change rule may be triggered after a transaction is totaled - - but before tax and tender entry (i.e. MERCHANDISE SUBTOTAL TIME).&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;line item discount, calculated after each line item („PO“)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;line item discount, calculated after subtotal (“PC”)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;transaction discount, calculated after each line item (“SP”)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;transaction discount, calculated after subtotal („SU“)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Promotion.Condition.Rule.GlobalData.TransactionControlCode&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.TransactionControlCode&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum TransactionControlBreakCodeEnum
        {
            
            /// <summary>
            /// Enum PO for value: PO
            /// </summary>
            [EnumMember(Value = "PO")]
            PO = 1,
            
            /// <summary>
            /// Enum SU for value: SU
            /// </summary>
            [EnumMember(Value = "SU")]
            SU = 2,
            
            /// <summary>
            /// Enum SP for value: SP
            /// </summary>
            [EnumMember(Value = "SP")]
            SP = 3,
            
            /// <summary>
            /// Enum PC for value: PC
            /// </summary>
            [EnumMember(Value = "PC")]
            PC = 4
        }

        /// <summary>
        /// &lt;p&gt;This is a special code that determines when, during the entry of a sale transaction, this rule will be applied. For example a price change rule may be applied on a line item by line item basis (which is DETAIL TIME), a price change rule may be triggered after a transaction is totaled - - but before tax and tender entry (i.e. MERCHANDISE SUBTOTAL TIME).&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;line item discount, calculated after each line item („PO“)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;line item discount, calculated after subtotal (“PC”)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;transaction discount, calculated after each line item (“SP”)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;transaction discount, calculated after subtotal („SU“)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Promotion.Condition.Rule.GlobalData.TransactionControlCode&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.TransactionControlCode&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This is a special code that determines when, during the entry of a sale transaction, this rule will be applied. For example a price change rule may be applied on a line item by line item basis (which is DETAIL TIME), a price change rule may be triggered after a transaction is totaled - - but before tax and tender entry (i.e. MERCHANDISE SUBTOTAL TIME).&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;line item discount, calculated after each line item („PO“)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;line item discount, calculated after subtotal (“PC”)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;transaction discount, calculated after each line item (“SP”)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;transaction discount, calculated after subtotal („SU“)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Promotion.Condition.Rule.GlobalData.TransactionControlCode&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.TransactionControlCode&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="transactionControlBreakCode", EmitDefaultValue=false)]
        public TransactionControlBreakCodeEnum? TransactionControlBreakCode { get; set; }
        /// <summary>
        /// &lt;p&gt;Defines the type of price derivation rule.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;RB &#x3D; simple rebate&lt;/li&gt;&lt;br /&gt; &lt;li&gt;MM &#x3D; Mix &amp;amp; Match&lt;/li&gt;&lt;br /&gt; &lt;li&gt;GP &#x3D; Get3Pay2&lt;/li&gt;&lt;br /&gt; &lt;li&gt;NO &#x3D; no rebate&lt;/li&gt;&lt;br /&gt; &lt;li&gt;MA &#x3D; manual, the discount information is set by POS function&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EX &#x3D; external action&lt;/li&gt;&lt;br /&gt; &lt;li&gt;AP &#x3D; additional price type rule&lt;/li&gt;&lt;br /&gt; &lt;li&gt;AB &#x3D; additional bonus&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt; The value is filled according to the used rule type from Promotion.Condition.Rule.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Defines the type of price derivation rule.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;RB &#x3D; simple rebate&lt;/li&gt;&lt;br /&gt; &lt;li&gt;MM &#x3D; Mix &amp;amp; Match&lt;/li&gt;&lt;br /&gt; &lt;li&gt;GP &#x3D; Get3Pay2&lt;/li&gt;&lt;br /&gt; &lt;li&gt;NO &#x3D; no rebate&lt;/li&gt;&lt;br /&gt; &lt;li&gt;MA &#x3D; manual, the discount information is set by POS function&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EX &#x3D; external action&lt;/li&gt;&lt;br /&gt; &lt;li&gt;AP &#x3D; additional price type rule&lt;/li&gt;&lt;br /&gt; &lt;li&gt;AB &#x3D; additional bonus&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt; The value is filled according to the used rule type from Promotion.Condition.Rule.&lt;br /&gt;&lt;/p&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum TypeCodeEnum
        {
            
            /// <summary>
            /// Enum RB for value: RB
            /// </summary>
            [EnumMember(Value = "RB")]
            RB = 1,
            
            /// <summary>
            /// Enum MM for value: MM
            /// </summary>
            [EnumMember(Value = "MM")]
            MM = 2,
            
            /// <summary>
            /// Enum NO for value: NO
            /// </summary>
            [EnumMember(Value = "NO")]
            NO = 3,
            
            /// <summary>
            /// Enum GP for value: GP
            /// </summary>
            [EnumMember(Value = "GP")]
            GP = 4,
            
            /// <summary>
            /// Enum MA for value: MA
            /// </summary>
            [EnumMember(Value = "MA")]
            MA = 5,
            
            /// <summary>
            /// Enum EX for value: EX
            /// </summary>
            [EnumMember(Value = "EX")]
            EX = 6,
            
            /// <summary>
            /// Enum AP for value: AP
            /// </summary>
            [EnumMember(Value = "AP")]
            AP = 7,
            
            /// <summary>
            /// Enum AB for value: AB
            /// </summary>
            [EnumMember(Value = "AB")]
            AB = 8
        }

        /// <summary>
        /// &lt;p&gt;Defines the type of price derivation rule.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;RB &#x3D; simple rebate&lt;/li&gt;&lt;br /&gt; &lt;li&gt;MM &#x3D; Mix &amp;amp; Match&lt;/li&gt;&lt;br /&gt; &lt;li&gt;GP &#x3D; Get3Pay2&lt;/li&gt;&lt;br /&gt; &lt;li&gt;NO &#x3D; no rebate&lt;/li&gt;&lt;br /&gt; &lt;li&gt;MA &#x3D; manual, the discount information is set by POS function&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EX &#x3D; external action&lt;/li&gt;&lt;br /&gt; &lt;li&gt;AP &#x3D; additional price type rule&lt;/li&gt;&lt;br /&gt; &lt;li&gt;AB &#x3D; additional bonus&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt; The value is filled according to the used rule type from Promotion.Condition.Rule.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Defines the type of price derivation rule.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;RB &#x3D; simple rebate&lt;/li&gt;&lt;br /&gt; &lt;li&gt;MM &#x3D; Mix &amp;amp; Match&lt;/li&gt;&lt;br /&gt; &lt;li&gt;GP &#x3D; Get3Pay2&lt;/li&gt;&lt;br /&gt; &lt;li&gt;NO &#x3D; no rebate&lt;/li&gt;&lt;br /&gt; &lt;li&gt;MA &#x3D; manual, the discount information is set by POS function&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EX &#x3D; external action&lt;/li&gt;&lt;br /&gt; &lt;li&gt;AP &#x3D; additional price type rule&lt;/li&gt;&lt;br /&gt; &lt;li&gt;AB &#x3D; additional bonus&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt; The value is filled according to the used rule type from Promotion.Condition.Rule.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="typeCode", EmitDefaultValue=false)]
        public TypeCodeEnum TypeCode { get; set; }
        /// <summary>
        /// &lt;p&gt;Determines how the calculated reduction amount is to be rounded;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null/00 &#x3D; commercial rounding&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01 &#x3D; down&lt;/li&gt;&lt;br /&gt; &lt;li&gt;02 &#x3D; up&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Determines how the calculated reduction amount is to be rounded;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null/00 &#x3D; commercial rounding&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01 &#x3D; down&lt;/li&gt;&lt;br /&gt; &lt;li&gt;02 &#x3D; up&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum RoundingMethodCodeEnum
        {
            
            /// <summary>
            /// Enum COMMERCIALROUNDING for value: COMMERCIAL_ROUNDING
            /// </summary>
            [EnumMember(Value = "COMMERCIAL_ROUNDING")]
            COMMERCIALROUNDING = 1,
            
            /// <summary>
            /// Enum DOWN for value: DOWN
            /// </summary>
            [EnumMember(Value = "DOWN")]
            DOWN = 2,
            
            /// <summary>
            /// Enum UP for value: UP
            /// </summary>
            [EnumMember(Value = "UP")]
            UP = 3
        }

        /// <summary>
        /// &lt;p&gt;Determines how the calculated reduction amount is to be rounded;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null/00 &#x3D; commercial rounding&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01 &#x3D; down&lt;/li&gt;&lt;br /&gt; &lt;li&gt;02 &#x3D; up&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Determines how the calculated reduction amount is to be rounded;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null/00 &#x3D; commercial rounding&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01 &#x3D; down&lt;/li&gt;&lt;br /&gt; &lt;li&gt;02 &#x3D; up&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="roundingMethodCode", EmitDefaultValue=false)]
        public RoundingMethodCodeEnum? RoundingMethodCode { get; set; }
        /// <summary>
        /// &lt;p&gt;Determines, in which sequence items get rebate:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null &#x3D; determined by the corresponding property of the loyalty engine&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01 &#x3D; lowest rebate first&lt;/li&gt;&lt;br /&gt; &lt;li&gt;02 &#x3D; highest rebate first&lt;/li&gt;&lt;br /&gt; &lt;li&gt;03 &#x3D; lowest rebate first per interval&lt;/li&gt;&lt;br /&gt; &lt;li&gt;04 &#x3D; highest rebate first per interval&lt;/li&gt;&lt;br /&gt; &lt;li&gt;00 &#x3D; determined by the Promotion Calculation Engine&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.ChooseItemMethod&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Determines, in which sequence items get rebate:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null &#x3D; determined by the corresponding property of the loyalty engine&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01 &#x3D; lowest rebate first&lt;/li&gt;&lt;br /&gt; &lt;li&gt;02 &#x3D; highest rebate first&lt;/li&gt;&lt;br /&gt; &lt;li&gt;03 &#x3D; lowest rebate first per interval&lt;/li&gt;&lt;br /&gt; &lt;li&gt;04 &#x3D; highest rebate first per interval&lt;/li&gt;&lt;br /&gt; &lt;li&gt;00 &#x3D; determined by the Promotion Calculation Engine&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.ChooseItemMethod&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum ChooseItemMethodEnum
        {
            
            /// <summary>
            /// Enum LOWESTFIRST for value: LOWEST_FIRST
            /// </summary>
            [EnumMember(Value = "LOWEST_FIRST")]
            LOWESTFIRST = 1,
            
            /// <summary>
            /// Enum HIGHESTFIRST for value: HIGHEST_FIRST
            /// </summary>
            [EnumMember(Value = "HIGHEST_FIRST")]
            HIGHESTFIRST = 2,
            
            /// <summary>
            /// Enum LOWESTFIRSTINT for value: LOWEST_FIRST_INT
            /// </summary>
            [EnumMember(Value = "LOWEST_FIRST_INT")]
            LOWESTFIRSTINT = 3,
            
            /// <summary>
            /// Enum HIGHESTFIRSTINT for value: HIGHEST_FIRST_INT
            /// </summary>
            [EnumMember(Value = "HIGHEST_FIRST_INT")]
            HIGHESTFIRSTINT = 4,
            
            /// <summary>
            /// Enum DETERMINEDBYPCE for value: DETERMINED_BY_PCE
            /// </summary>
            [EnumMember(Value = "DETERMINED_BY_PCE")]
            DETERMINEDBYPCE = 5
        }

        /// <summary>
        /// &lt;p&gt;Determines, in which sequence items get rebate:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null &#x3D; determined by the corresponding property of the loyalty engine&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01 &#x3D; lowest rebate first&lt;/li&gt;&lt;br /&gt; &lt;li&gt;02 &#x3D; highest rebate first&lt;/li&gt;&lt;br /&gt; &lt;li&gt;03 &#x3D; lowest rebate first per interval&lt;/li&gt;&lt;br /&gt; &lt;li&gt;04 &#x3D; highest rebate first per interval&lt;/li&gt;&lt;br /&gt; &lt;li&gt;00 &#x3D; determined by the Promotion Calculation Engine&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.ChooseItemMethod&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Determines, in which sequence items get rebate:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null &#x3D; determined by the corresponding property of the loyalty engine&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01 &#x3D; lowest rebate first&lt;/li&gt;&lt;br /&gt; &lt;li&gt;02 &#x3D; highest rebate first&lt;/li&gt;&lt;br /&gt; &lt;li&gt;03 &#x3D; lowest rebate first per interval&lt;/li&gt;&lt;br /&gt; &lt;li&gt;04 &#x3D; highest rebate first per interval&lt;/li&gt;&lt;br /&gt; &lt;li&gt;00 &#x3D; determined by the Promotion Calculation Engine&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.ChooseItemMethod&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="chooseItemMethod", EmitDefaultValue=false)]
        public ChooseItemMethodEnum? ChooseItemMethod { get; set; }
        /// <summary>
        /// &lt;p&gt;Base of the calculation:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;00/null: is determined by the eligibilities&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01: sum of sales - sum of returns&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Base of the calculation:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;00/null: is determined by the eligibilities&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01: sum of sales - sum of returns&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum CalculationBaseEnum
        {
            
            /// <summary>
            /// Enum _00 for value: CALCBASE_00
            /// </summary>
            [EnumMember(Value = "CALCBASE_00")]
            _00 = 1,
            
            /// <summary>
            /// Enum _01 for value: CALCBASE_01
            /// </summary>
            [EnumMember(Value = "CALCBASE_01")]
            _01 = 2
        }

        /// <summary>
        /// &lt;p&gt;Base of the calculation:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;00/null: is determined by the eligibilities&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01: sum of sales - sum of returns&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Base of the calculation:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;00/null: is determined by the eligibilities&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01: sum of sales - sum of returns&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="calculationBase", EmitDefaultValue=false)]
        public CalculationBaseEnum? CalculationBase { get; set; }
        /// <summary>
        /// &lt;p&gt;Type code of the printout rule&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null/00 &#x3D; separate receipt&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01 &#x3D; print at the end of the receipt&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsCoupon.CouponPrintoutRule&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Type code of the printout rule&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null/00 &#x3D; separate receipt&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01 &#x3D; print at the end of the receipt&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsCoupon.CouponPrintoutRule&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [JsonConverter(typeof(StringEnumConverter))]
        public enum CouponPrintoutRuleEnum
        {
            
            /// <summary>
            /// Enum SEPARATERECEIPT for value: SEPARATE_RECEIPT
            /// </summary>
            [EnumMember(Value = "SEPARATE_RECEIPT")]
            SEPARATERECEIPT = 1,
            
            /// <summary>
            /// Enum PRINTATEND for value: PRINT_AT_END
            /// </summary>
            [EnumMember(Value = "PRINT_AT_END")]
            PRINTATEND = 2
        }

        /// <summary>
        /// &lt;p&gt;Type code of the printout rule&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null/00 &#x3D; separate receipt&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01 &#x3D; print at the end of the receipt&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsCoupon.CouponPrintoutRule&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Type code of the printout rule&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null/00 &#x3D; separate receipt&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01 &#x3D; print at the end of the receipt&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsCoupon.CouponPrintoutRule&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="couponPrintoutRule", EmitDefaultValue=false)]
        public CouponPrintoutRuleEnum? CouponPrintoutRule { get; set; }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO" /> class.
        /// </summary>
        [JsonConstructorAttribute]
        protected ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO() { }
        /// <summary>
        /// Initializes a new instance of the <see cref="ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO" /> class.
        /// </summary>
        /// <param name="internalRuleID">&lt;p&gt;A identifier for a specific price derivation rule.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Generated, not imported.&lt;br /&gt;&lt;/p&gt; (required).</param>
        /// <param name="name">&lt;p&gt;Price derivation rule name&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Not imported.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="description">&lt;p&gt;Business description for this price derivation rule.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: from Promotion.Condition.Rule.GlobalData.RuleTranslationList or from Promotion.Condition.Rule.GlobalData.Description&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;.</param>
        /// <param name="transactionControlBreakCode">&lt;p&gt;This is a special code that determines when, during the entry of a sale transaction, this rule will be applied. For example a price change rule may be applied on a line item by line item basis (which is DETAIL TIME), a price change rule may be triggered after a transaction is totaled - - but before tax and tender entry (i.e. MERCHANDISE SUBTOTAL TIME).&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;line item discount, calculated after each line item („PO“)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;line item discount, calculated after subtotal (“PC”)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;transaction discount, calculated after each line item (“SP”)&lt;/li&gt;&lt;br /&gt; &lt;li&gt;transaction discount, calculated after subtotal („SU“)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Promotion.Condition.Rule.GlobalData.TransactionControlCode&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.TransactionControlCode&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;.</param>
        /// <param name="statusCode">&lt;p&gt;Defines the current status for the price derivation rule. Examples of valid codes include: Pending, Active, Canceled, Inactive&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;PD &#x3D; pending&lt;/li&gt;&lt;br /&gt; &lt;li&gt;AC/null &#x3D; active&lt;/li&gt;&lt;br /&gt; &lt;li&gt;CN &#x3D; cancelled&lt;/li&gt;&lt;br /&gt; &lt;li&gt;IA &#x3D; inactive&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: &#39;AC&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;.</param>
        /// <param name="typeCode">&lt;p&gt;Defines the type of price derivation rule.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;RB &#x3D; simple rebate&lt;/li&gt;&lt;br /&gt; &lt;li&gt;MM &#x3D; Mix &amp;amp; Match&lt;/li&gt;&lt;br /&gt; &lt;li&gt;GP &#x3D; Get3Pay2&lt;/li&gt;&lt;br /&gt; &lt;li&gt;NO &#x3D; no rebate&lt;/li&gt;&lt;br /&gt; &lt;li&gt;MA &#x3D; manual, the discount information is set by POS function&lt;/li&gt;&lt;br /&gt; &lt;li&gt;EX &#x3D; external action&lt;/li&gt;&lt;br /&gt; &lt;li&gt;AP &#x3D; additional price type rule&lt;/li&gt;&lt;br /&gt; &lt;li&gt;AB &#x3D; additional bonus&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt; The value is filled according to the used rule type from Promotion.Condition.Rule.&lt;br /&gt;&lt;/p&gt; (required).</param>
        /// <param name="ruleID">&lt;p&gt;External ident of the price derivation rule&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.GlobalData.ID&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;.</param>
        /// <param name="bonusPointsFlag">&lt;p&gt;Determines whether rebate or bonus points are awarded by the rule&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: true if Promotion.Condition.Rule.BonusPoints is chosen&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="roundingMethodCode">&lt;p&gt;Determines how the calculated reduction amount is to be rounded;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null/00 &#x3D; commercial rounding&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01 &#x3D; down&lt;/li&gt;&lt;br /&gt; &lt;li&gt;02 &#x3D; up&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;.</param>
        /// <param name="decimalPlacesCount">&lt;p&gt;Requested number of decimal places of the calculated reduction amount;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null &#x3D; 2 decimal places&lt;/li&gt;&lt;br /&gt; &lt;li&gt;value &#x3D; the calculated reduction amount is to be rounded/truncated because it should contain only the given number of decimal places&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="roundDestinationValue">&lt;p&gt;Additional information for rounding,&lt;br /&gt; possible values:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null/1: no additional treatment of the rounded result necessary&lt;/li&gt;&lt;br /&gt; &lt;li&gt;5: the rounded result is to be adjusted to the next resp. previous multiple of 5&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="discountMethodCode">&lt;p&gt;Determines how the rebate influences the transaction:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;00/null: the rebate reduces the transaction total&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01: the rebate does not influence the transaction total or the amout the customer has to pay, but the customer gets a gift certificate about the rebate amount which he can use for payment the next time&lt;/li&gt;&lt;br /&gt; &lt;li&gt;02: the rebate is used as tender for the current transaction, i.e. it reduces the amount the customer still has to pay&lt;/li&gt;&lt;br /&gt; &lt;li&gt;03: the rebate reduces the transaction total but it will be counterbalanced by some gift certificate sale.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;04: a coupon will be given to the customer instead of a rebate. Transaction total will not be reduced.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml:&lt;br /&gt;  &lt;ul&gt;&lt;br /&gt;   &lt;li&gt;00 - if Promotion.Condition.Rule.GlobalData.RebateMethod.NormalRebate is filled&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;01 - if Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsGiftCert is filled and Promotion.Condition.Rule.RebateMethod.RebateAsGiftCert.IsCharged &#x3D; false&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;02 - if Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsTender is filled&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;03 - if Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsGiftCert is filled and Promotion.Condition.Rule.RebateMethod.RebateAsGiftCert.IsCharged &#x3D; true&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;04 - if Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsCoupon is filled&lt;/li&gt;&lt;br /&gt;  &lt;/ul&gt;&lt;br /&gt; &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;.</param>
        /// <param name="giftCertificateExpirationDate">&lt;p&gt;End of the date range in which the gift certificate is valid&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsGiftCert.GiftCertExpiryDate&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone).</param>
        /// <param name="tenderTypeCode">&lt;p&gt;A code which uniquely identifies the type of tender, ie cash, check, credit card, etc.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.RebateMethod.RebateAsTender.TenderTypeCode&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;.</param>
        /// <param name="prohibitTransactionRelatedPromotionConditionFlag">&lt;p&gt;Determines whether applying this condition influences the calculation base of subsequent transaction-related conditionens (false) or not (true); is relevant for position-related &#39;money&#39; conditions only&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.ProhibitsBonRelatedConditionFlag&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="chooseItemMethod">&lt;p&gt;Determines, in which sequence items get rebate:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null &#x3D; determined by the corresponding property of the loyalty engine&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01 &#x3D; lowest rebate first&lt;/li&gt;&lt;br /&gt; &lt;li&gt;02 &#x3D; highest rebate first&lt;/li&gt;&lt;br /&gt; &lt;li&gt;03 &#x3D; lowest rebate first per interval&lt;/li&gt;&lt;br /&gt; &lt;li&gt;04 &#x3D; highest rebate first per interval&lt;/li&gt;&lt;br /&gt; &lt;li&gt;00 &#x3D; determined by the Promotion Calculation Engine&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.ChooseItemMethod&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;.</param>
        /// <param name="noEffectOnSubsequentPromotionConditionFlag">&lt;p&gt;Determines whether applying this condition influences the calculation base of subsequent conditions (false) or not (true); is relevant for position-related &#39;money&#39; conditions only&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.NoInfluenceOnSubsequentConditionFlag&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;.</param>
        /// <param name="calculationBase">&lt;p&gt;Base of the calculation:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;00/null: is determined by the eligibilities&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01: sum of sales - sum of returns&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;.</param>
        /// <param name="couponPrintoutID">&lt;p&gt;number of the printout coupon&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsCoupon.CouponPrintoutID&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;.</param>
        /// <param name="couponPrintoutRule">&lt;p&gt;Type code of the printout rule&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null/00 &#x3D; separate receipt&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01 &#x3D; print at the end of the receipt&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsCoupon.CouponPrintoutRule&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;.</param>
        /// <param name="couponPrintoutText">&lt;p&gt;Formated Text of the printout coupon&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsCoupon.CouponPrintoutText&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;.</param>
        /// <param name="considerPreviousPromotionConditionFlag">&lt;p&gt;Indicates whether all conditions are to be considered which were applied before (true) or not (false).&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.ConsiderAllPreviousConditionsFlag&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="printoutValidityPeriod">&lt;p&gt;Validity period for printout coupons or gift certificates&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsGiftCert.PrintoutValidityPeriod or Promotion.Condition.Rule.RebateMethod.RebateAsCoupon.PrintoutValidityPeriod&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;.</param>
        /// <param name="tid">&lt;p&gt;Translation identifier - used for the unique identification of translations in the common translation table.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Generated, not imported.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="promotionConditionRuleTranslationList">&lt;p&gt;List of translations&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="externalConditionRuleID">&lt;p&gt;External ID of the condition rule (filled with PromotionConditionID)&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="calculationBaseSequence">&lt;p&gt;Determines which one of the previously applied modifiers is to be considered as calculation base for the current modification. In detail, the calculation base for the current price derivation rule is to be determined as following:&lt;br /&gt; - In case that no price derivation rules were applied before, it is the original price/total.&lt;br /&gt; - Null: all price derivation rules which were applied before the current price derivation rule are to be considered, i.e. the calculation base for the current price derivation rule equals to the new price of the price derivation rule which was applied just before it &#x3D; as latest.&lt;br /&gt; - Otherwise, the calculation base for the current price derivation rule equals to the new price of that price derivation rule which was applied one or more steps before it having the highest sequence &amp;lt;&#x3D; CalculationBaseSequence (or the original price if no such price derivation rule was applied).&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="roundingRuleID">&lt;p&gt;The system-generated identifier of the rounding rule which applies for discounts/bonus points counts resulting from applying the price derivation rule&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="shareRoundingRuleID">&lt;p&gt;The system-generated identifier of the rounding rule which applies for shares resulting from prorating basket-related discounts or bonus points resulting from applying the price derivation rule&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="pointsAmountRoundingRuleID">&lt;p&gt;The system-generated identifier of the rounding rule applies for monetary equivalents to bonus points counts resulting from applying the price derivation rule&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="noPreviousMonetaryDiscountAllowedFlag">&lt;p&gt;Determines whether the price derivation rule is applicable in general (false) or only in the case that no other monetary discounts were granted before (true).&lt;br /&gt;&lt;/p&gt; (required).</param>
        /// <param name="increasePriceAllowedFlag">&lt;p&gt;This flag decides whether a promotion price derivation rule or a particular price is allowed to increase the price in comparison to the latest calculated discount sales price.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Possible values:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;true: price increase is allowed. In this case, the promotion price derivation rule is applied even though the item costs afterwards more than before.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;false: price increase is not allowed. In this case, the promotion price derivation rule is not applied without any thrown business error or indicator why.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; (required).</param>
        /// <param name="packageLimitQuantity">&lt;p&gt;For measured items (e.g. pre-packed weighed items), the package limit quantity limits the maximum package count that can receive a benefit. A price derivation rule containing a package limit quantity being not null and greater than zero can be applied to measured items only, but not to piece items.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom08">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom10">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom09">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom07">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom05">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom06">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom11">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom12">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom13">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom14">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom15">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom03">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom02">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom04">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom16">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom17">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom18">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom19">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom20">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom21">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom22">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom23">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom24">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom25">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom26">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom27">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom28">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom29">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom30">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        /// <param name="xxcustom01">&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;.</param>
        public ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO(string internalRuleID = default(string), string name = default(string), string description = default(string), TransactionControlBreakCodeEnum? transactionControlBreakCode = default(TransactionControlBreakCodeEnum?), string statusCode = default(string), TypeCodeEnum typeCode = default(TypeCodeEnum), string ruleID = default(string), bool? bonusPointsFlag = default(bool?), RoundingMethodCodeEnum? roundingMethodCode = default(RoundingMethodCodeEnum?), int? decimalPlacesCount = default(int?), int? roundDestinationValue = default(int?), string discountMethodCode = default(string), string giftCertificateExpirationDate = default(string), string tenderTypeCode = default(string), bool? prohibitTransactionRelatedPromotionConditionFlag = default(bool?), ChooseItemMethodEnum? chooseItemMethod = default(ChooseItemMethodEnum?), bool? noEffectOnSubsequentPromotionConditionFlag = default(bool?), CalculationBaseEnum? calculationBase = default(CalculationBaseEnum?), string couponPrintoutID = default(string), CouponPrintoutRuleEnum? couponPrintoutRule = default(CouponPrintoutRuleEnum?), Object couponPrintoutText = default(Object), bool? considerPreviousPromotionConditionFlag = default(bool?), double? printoutValidityPeriod = default(double?), string tid = default(string), List<ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleTranslationSO> promotionConditionRuleTranslationList = default(List<ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleTranslationSO>), string externalConditionRuleID = default(string), string calculationBaseSequence = default(string), string roundingRuleID = default(string), string shareRoundingRuleID = default(string), string pointsAmountRoundingRuleID = default(string), bool? noPreviousMonetaryDiscountAllowedFlag = default(bool?), bool? increasePriceAllowedFlag = default(bool?), int? packageLimitQuantity = default(int?), 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 xxcustom16 = default(string), string xxcustom17 = default(string), string xxcustom18 = default(string), string xxcustom19 = default(string), string xxcustom20 = default(string), string xxcustom21 = default(string), string xxcustom22 = default(string), string xxcustom23 = default(string), string xxcustom24 = default(string), string xxcustom25 = default(string), string xxcustom26 = default(string), string xxcustom27 = default(string), string xxcustom28 = default(string), string xxcustom29 = default(string), string xxcustom30 = default(string), string xxcustom01 = default(string))
        {
            // to ensure "internalRuleID" is required (not null)
            if (internalRuleID == null)
            {
                throw new InvalidDataException("internalRuleID is a required property for ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO and cannot be null");
            }
            else
            {
                this.InternalRuleID = internalRuleID;
            }
            // to ensure "typeCode" is required (not null)
            if (typeCode == null)
            {
                throw new InvalidDataException("typeCode is a required property for ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO and cannot be null");
            }
            else
            {
                this.TypeCode = typeCode;
            }
            // to ensure "bonusPointsFlag" is required (not null)
            if (bonusPointsFlag == null)
            {
                throw new InvalidDataException("bonusPointsFlag is a required property for ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO and cannot be null");
            }
            else
            {
                this.BonusPointsFlag = bonusPointsFlag;
            }
            // to ensure "decimalPlacesCount" is required (not null)
            if (decimalPlacesCount == null)
            {
                throw new InvalidDataException("decimalPlacesCount is a required property for ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO and cannot be null");
            }
            else
            {
                this.DecimalPlacesCount = decimalPlacesCount;
            }
            // to ensure "roundDestinationValue" is required (not null)
            if (roundDestinationValue == null)
            {
                throw new InvalidDataException("roundDestinationValue is a required property for ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO and cannot be null");
            }
            else
            {
                this.RoundDestinationValue = roundDestinationValue;
            }
            // to ensure "prohibitTransactionRelatedPromotionConditionFlag" is required (not null)
            if (prohibitTransactionRelatedPromotionConditionFlag == null)
            {
                throw new InvalidDataException("prohibitTransactionRelatedPromotionConditionFlag is a required property for ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO and cannot be null");
            }
            else
            {
                this.ProhibitTransactionRelatedPromotionConditionFlag = prohibitTransactionRelatedPromotionConditionFlag;
            }
            // to ensure "considerPreviousPromotionConditionFlag" is required (not null)
            if (considerPreviousPromotionConditionFlag == null)
            {
                throw new InvalidDataException("considerPreviousPromotionConditionFlag is a required property for ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO and cannot be null");
            }
            else
            {
                this.ConsiderPreviousPromotionConditionFlag = considerPreviousPromotionConditionFlag;
            }
            // to ensure "noPreviousMonetaryDiscountAllowedFlag" is required (not null)
            if (noPreviousMonetaryDiscountAllowedFlag == null)
            {
                throw new InvalidDataException("noPreviousMonetaryDiscountAllowedFlag is a required property for ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO and cannot be null");
            }
            else
            {
                this.NoPreviousMonetaryDiscountAllowedFlag = noPreviousMonetaryDiscountAllowedFlag;
            }
            // to ensure "increasePriceAllowedFlag" is required (not null)
            if (increasePriceAllowedFlag == null)
            {
                throw new InvalidDataException("increasePriceAllowedFlag is a required property for ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO and cannot be null");
            }
            else
            {
                this.IncreasePriceAllowedFlag = increasePriceAllowedFlag;
            }
            this.Name = name;
            this.Description = description;
            this.TransactionControlBreakCode = transactionControlBreakCode;
            this.StatusCode = statusCode;
            this.RuleID = ruleID;
            this.RoundingMethodCode = roundingMethodCode;
            this.DiscountMethodCode = discountMethodCode;
            this.GiftCertificateExpirationDate = giftCertificateExpirationDate;
            this.TenderTypeCode = tenderTypeCode;
            this.ChooseItemMethod = chooseItemMethod;
            this.NoEffectOnSubsequentPromotionConditionFlag = noEffectOnSubsequentPromotionConditionFlag;
            this.CalculationBase = calculationBase;
            this.CouponPrintoutID = couponPrintoutID;
            this.CouponPrintoutRule = couponPrintoutRule;
            this.CouponPrintoutText = couponPrintoutText;
            this.PrintoutValidityPeriod = printoutValidityPeriod;
            this.Tid = tid;
            this.PromotionConditionRuleTranslationList = promotionConditionRuleTranslationList;
            this.ExternalConditionRuleID = externalConditionRuleID;
            this.CalculationBaseSequence = calculationBaseSequence;
            this.RoundingRuleID = roundingRuleID;
            this.ShareRoundingRuleID = shareRoundingRuleID;
            this.PointsAmountRoundingRuleID = pointsAmountRoundingRuleID;
            this.PackageLimitQuantity = packageLimitQuantity;
            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.Xxcustom16 = xxcustom16;
            this.Xxcustom17 = xxcustom17;
            this.Xxcustom18 = xxcustom18;
            this.Xxcustom19 = xxcustom19;
            this.Xxcustom20 = xxcustom20;
            this.Xxcustom21 = xxcustom21;
            this.Xxcustom22 = xxcustom22;
            this.Xxcustom23 = xxcustom23;
            this.Xxcustom24 = xxcustom24;
            this.Xxcustom25 = xxcustom25;
            this.Xxcustom26 = xxcustom26;
            this.Xxcustom27 = xxcustom27;
            this.Xxcustom28 = xxcustom28;
            this.Xxcustom29 = xxcustom29;
            this.Xxcustom30 = xxcustom30;
            this.Xxcustom01 = xxcustom01;
        }
        
        /// <summary>
        /// &lt;p&gt;A identifier for a specific price derivation rule.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Generated, not imported.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;A identifier for a specific price derivation rule.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Generated, not imported.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="internalRuleID", EmitDefaultValue=false)]
        public string InternalRuleID { get; set; }

        /// <summary>
        /// &lt;p&gt;Price derivation rule name&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Not imported.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Price derivation rule name&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Not imported.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="name", EmitDefaultValue=false)]
        public string Name { get; set; }

        /// <summary>
        /// &lt;p&gt;Business description for this price derivation rule.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: from Promotion.Condition.Rule.GlobalData.RuleTranslationList or from Promotion.Condition.Rule.GlobalData.Description&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Business description for this price derivation rule.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: from Promotion.Condition.Rule.GlobalData.RuleTranslationList or from Promotion.Condition.Rule.GlobalData.Description&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="description", EmitDefaultValue=false)]
        public string Description { get; set; }


        /// <summary>
        /// &lt;p&gt;Defines the current status for the price derivation rule. Examples of valid codes include: Pending, Active, Canceled, Inactive&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;PD &#x3D; pending&lt;/li&gt;&lt;br /&gt; &lt;li&gt;AC/null &#x3D; active&lt;/li&gt;&lt;br /&gt; &lt;li&gt;CN &#x3D; cancelled&lt;/li&gt;&lt;br /&gt; &lt;li&gt;IA &#x3D; inactive&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: &#39;AC&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Defines the current status for the price derivation rule. Examples of valid codes include: Pending, Active, Canceled, Inactive&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;PD &#x3D; pending&lt;/li&gt;&lt;br /&gt; &lt;li&gt;AC/null &#x3D; active&lt;/li&gt;&lt;br /&gt; &lt;li&gt;CN &#x3D; cancelled&lt;/li&gt;&lt;br /&gt; &lt;li&gt;IA &#x3D; inactive&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: &#39;AC&#39;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="statusCode", EmitDefaultValue=false)]
        public string StatusCode { get; set; }


        /// <summary>
        /// &lt;p&gt;External ident of the price derivation rule&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.GlobalData.ID&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;External ident of the price derivation rule&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.GlobalData.ID&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="ruleID", EmitDefaultValue=false)]
        public string RuleID { get; set; }

        /// <summary>
        /// &lt;p&gt;Determines whether rebate or bonus points are awarded by the rule&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: true if Promotion.Condition.Rule.BonusPoints is chosen&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Determines whether rebate or bonus points are awarded by the rule&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: true if Promotion.Condition.Rule.BonusPoints is chosen&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="bonusPointsFlag", EmitDefaultValue=false)]
        public bool? BonusPointsFlag { get; set; }


        /// <summary>
        /// &lt;p&gt;Requested number of decimal places of the calculated reduction amount;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null &#x3D; 2 decimal places&lt;/li&gt;&lt;br /&gt; &lt;li&gt;value &#x3D; the calculated reduction amount is to be rounded/truncated because it should contain only the given number of decimal places&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Requested number of decimal places of the calculated reduction amount;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null &#x3D; 2 decimal places&lt;/li&gt;&lt;br /&gt; &lt;li&gt;value &#x3D; the calculated reduction amount is to be rounded/truncated because it should contain only the given number of decimal places&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="decimalPlacesCount", EmitDefaultValue=false)]
        public int? DecimalPlacesCount { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional information for rounding,&lt;br /&gt; possible values:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null/1: no additional treatment of the rounded result necessary&lt;/li&gt;&lt;br /&gt; &lt;li&gt;5: the rounded result is to be adjusted to the next resp. previous multiple of 5&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional information for rounding,&lt;br /&gt; possible values:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;null/1: no additional treatment of the rounded result necessary&lt;/li&gt;&lt;br /&gt; &lt;li&gt;5: the rounded result is to be adjusted to the next resp. previous multiple of 5&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="roundDestinationValue", EmitDefaultValue=false)]
        public int? RoundDestinationValue { get; set; }

        /// <summary>
        /// &lt;p&gt;Determines how the rebate influences the transaction:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;00/null: the rebate reduces the transaction total&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01: the rebate does not influence the transaction total or the amout the customer has to pay, but the customer gets a gift certificate about the rebate amount which he can use for payment the next time&lt;/li&gt;&lt;br /&gt; &lt;li&gt;02: the rebate is used as tender for the current transaction, i.e. it reduces the amount the customer still has to pay&lt;/li&gt;&lt;br /&gt; &lt;li&gt;03: the rebate reduces the transaction total but it will be counterbalanced by some gift certificate sale.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;04: a coupon will be given to the customer instead of a rebate. Transaction total will not be reduced.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml:&lt;br /&gt;  &lt;ul&gt;&lt;br /&gt;   &lt;li&gt;00 - if Promotion.Condition.Rule.GlobalData.RebateMethod.NormalRebate is filled&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;01 - if Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsGiftCert is filled and Promotion.Condition.Rule.RebateMethod.RebateAsGiftCert.IsCharged &#x3D; false&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;02 - if Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsTender is filled&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;03 - if Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsGiftCert is filled and Promotion.Condition.Rule.RebateMethod.RebateAsGiftCert.IsCharged &#x3D; true&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;04 - if Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsCoupon is filled&lt;/li&gt;&lt;br /&gt;  &lt;/ul&gt;&lt;br /&gt; &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Determines how the rebate influences the transaction:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;00/null: the rebate reduces the transaction total&lt;/li&gt;&lt;br /&gt; &lt;li&gt;01: the rebate does not influence the transaction total or the amout the customer has to pay, but the customer gets a gift certificate about the rebate amount which he can use for payment the next time&lt;/li&gt;&lt;br /&gt; &lt;li&gt;02: the rebate is used as tender for the current transaction, i.e. it reduces the amount the customer still has to pay&lt;/li&gt;&lt;br /&gt; &lt;li&gt;03: the rebate reduces the transaction total but it will be counterbalanced by some gift certificate sale.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;04: a coupon will be given to the customer instead of a rebate. Transaction total will not be reduced.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml:&lt;br /&gt;  &lt;ul&gt;&lt;br /&gt;   &lt;li&gt;00 - if Promotion.Condition.Rule.GlobalData.RebateMethod.NormalRebate is filled&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;01 - if Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsGiftCert is filled and Promotion.Condition.Rule.RebateMethod.RebateAsGiftCert.IsCharged &#x3D; false&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;02 - if Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsTender is filled&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;03 - if Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsGiftCert is filled and Promotion.Condition.Rule.RebateMethod.RebateAsGiftCert.IsCharged &#x3D; true&lt;/li&gt;&lt;br /&gt;   &lt;li&gt;04 - if Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsCoupon is filled&lt;/li&gt;&lt;br /&gt;  &lt;/ul&gt;&lt;br /&gt; &lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="discountMethodCode", EmitDefaultValue=false)]
        public string DiscountMethodCode { get; set; }

        /// <summary>
        /// &lt;p&gt;End of the date range in which the gift certificate is valid&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsGiftCert.GiftCertExpiryDate&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone)
        /// </summary>
        /// <value>&lt;p&gt;End of the date range in which the gift certificate is valid&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsGiftCert.GiftCertExpiryDate&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt; Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone)</value>
        [DataMember(Name="giftCertificateExpirationDate", EmitDefaultValue=false)]
        public string GiftCertificateExpirationDate { get; set; }

        /// <summary>
        /// &lt;p&gt;A code which uniquely identifies the type of tender, ie cash, check, credit card, etc.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.RebateMethod.RebateAsTender.TenderTypeCode&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;A code which uniquely identifies the type of tender, ie cash, check, credit card, etc.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.RebateMethod.RebateAsTender.TenderTypeCode&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="tenderTypeCode", EmitDefaultValue=false)]
        public string TenderTypeCode { get; set; }

        /// <summary>
        /// &lt;p&gt;Determines whether applying this condition influences the calculation base of subsequent transaction-related conditionens (false) or not (true); is relevant for position-related &#39;money&#39; conditions only&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.ProhibitsBonRelatedConditionFlag&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Determines whether applying this condition influences the calculation base of subsequent transaction-related conditionens (false) or not (true); is relevant for position-related &#39;money&#39; conditions only&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.ProhibitsBonRelatedConditionFlag&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="prohibitTransactionRelatedPromotionConditionFlag", EmitDefaultValue=false)]
        public bool? ProhibitTransactionRelatedPromotionConditionFlag { get; set; }


        /// <summary>
        /// &lt;p&gt;Determines whether applying this condition influences the calculation base of subsequent conditions (false) or not (true); is relevant for position-related &#39;money&#39; conditions only&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.NoInfluenceOnSubsequentConditionFlag&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Determines whether applying this condition influences the calculation base of subsequent conditions (false) or not (true); is relevant for position-related &#39;money&#39; conditions only&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.NoInfluenceOnSubsequentConditionFlag&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="noEffectOnSubsequentPromotionConditionFlag", EmitDefaultValue=false)]
        public bool? NoEffectOnSubsequentPromotionConditionFlag { get; set; }


        /// <summary>
        /// &lt;p&gt;number of the printout coupon&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsCoupon.CouponPrintoutID&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;number of the printout coupon&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsCoupon.CouponPrintoutID&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="couponPrintoutID", EmitDefaultValue=false)]
        public string CouponPrintoutID { get; set; }


        /// <summary>
        /// &lt;p&gt;Formated Text of the printout coupon&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsCoupon.CouponPrintoutText&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Formated Text of the printout coupon&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsCoupon.CouponPrintoutText&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="couponPrintoutText", EmitDefaultValue=false)]
        public Object CouponPrintoutText { get; set; }

        /// <summary>
        /// &lt;p&gt;Indicates whether all conditions are to be considered which were applied before (true) or not (false).&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.ConsiderAllPreviousConditionsFlag&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Indicates whether all conditions are to be considered which were applied before (true) or not (false).&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.ConsiderAllPreviousConditionsFlag&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="considerPreviousPromotionConditionFlag", EmitDefaultValue=false)]
        public bool? ConsiderPreviousPromotionConditionFlag { get; set; }

        /// <summary>
        /// &lt;p&gt;Validity period for printout coupons or gift certificates&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsGiftCert.PrintoutValidityPeriod or Promotion.Condition.Rule.RebateMethod.RebateAsCoupon.PrintoutValidityPeriod&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;Validity period for printout coupons or gift certificates&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;masterdata_Promotion_SE.xml: Not imported.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionCPD.xml: Promotion.Condition.Rule.GlobalData.RebateMethod.RebateAsGiftCert.PrintoutValidityPeriod or Promotion.Condition.Rule.RebateMethod.RebateAsCoupon.PrintoutValidityPeriod&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="printoutValidityPeriod", EmitDefaultValue=false)]
        public double? PrintoutValidityPeriod { get; set; }

        /// <summary>
        /// &lt;p&gt;Translation identifier - used for the unique identification of translations in the common translation table.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Generated, not imported.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Translation identifier - used for the unique identification of translations in the common translation table.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Generated, not imported.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="tid", EmitDefaultValue=false)]
        public string Tid { get; set; }

        /// <summary>
        /// &lt;p&gt;List of translations&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;List of translations&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="promotionConditionRuleTranslationList", EmitDefaultValue=false)]
        public List<ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleTranslationSO> PromotionConditionRuleTranslationList { get; set; }

        /// <summary>
        /// &lt;p&gt;External ID of the condition rule (filled with PromotionConditionID)&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;External ID of the condition rule (filled with PromotionConditionID)&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="externalConditionRuleID", EmitDefaultValue=false)]
        public string ExternalConditionRuleID { get; set; }

        /// <summary>
        /// &lt;p&gt;Determines which one of the previously applied modifiers is to be considered as calculation base for the current modification. In detail, the calculation base for the current price derivation rule is to be determined as following:&lt;br /&gt; - In case that no price derivation rules were applied before, it is the original price/total.&lt;br /&gt; - Null: all price derivation rules which were applied before the current price derivation rule are to be considered, i.e. the calculation base for the current price derivation rule equals to the new price of the price derivation rule which was applied just before it &#x3D; as latest.&lt;br /&gt; - Otherwise, the calculation base for the current price derivation rule equals to the new price of that price derivation rule which was applied one or more steps before it having the highest sequence &amp;lt;&#x3D; CalculationBaseSequence (or the original price if no such price derivation rule was applied).&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Determines which one of the previously applied modifiers is to be considered as calculation base for the current modification. In detail, the calculation base for the current price derivation rule is to be determined as following:&lt;br /&gt; - In case that no price derivation rules were applied before, it is the original price/total.&lt;br /&gt; - Null: all price derivation rules which were applied before the current price derivation rule are to be considered, i.e. the calculation base for the current price derivation rule equals to the new price of the price derivation rule which was applied just before it &#x3D; as latest.&lt;br /&gt; - Otherwise, the calculation base for the current price derivation rule equals to the new price of that price derivation rule which was applied one or more steps before it having the highest sequence &amp;lt;&#x3D; CalculationBaseSequence (or the original price if no such price derivation rule was applied).&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="calculationBaseSequence", EmitDefaultValue=false)]
        public string CalculationBaseSequence { get; set; }

        /// <summary>
        /// &lt;p&gt;The system-generated identifier of the rounding rule which applies for discounts/bonus points counts resulting from applying the price derivation rule&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The system-generated identifier of the rounding rule which applies for discounts/bonus points counts resulting from applying the price derivation rule&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="roundingRuleID", EmitDefaultValue=false)]
        public string RoundingRuleID { get; set; }

        /// <summary>
        /// &lt;p&gt;The system-generated identifier of the rounding rule which applies for shares resulting from prorating basket-related discounts or bonus points resulting from applying the price derivation rule&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The system-generated identifier of the rounding rule which applies for shares resulting from prorating basket-related discounts or bonus points resulting from applying the price derivation rule&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="shareRoundingRuleID", EmitDefaultValue=false)]
        public string ShareRoundingRuleID { get; set; }

        /// <summary>
        /// &lt;p&gt;The system-generated identifier of the rounding rule applies for monetary equivalents to bonus points counts resulting from applying the price derivation rule&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The system-generated identifier of the rounding rule applies for monetary equivalents to bonus points counts resulting from applying the price derivation rule&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="pointsAmountRoundingRuleID", EmitDefaultValue=false)]
        public string PointsAmountRoundingRuleID { get; set; }

        /// <summary>
        /// &lt;p&gt;Determines whether the price derivation rule is applicable in general (false) or only in the case that no other monetary discounts were granted before (true).&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Determines whether the price derivation rule is applicable in general (false) or only in the case that no other monetary discounts were granted before (true).&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="noPreviousMonetaryDiscountAllowedFlag", EmitDefaultValue=false)]
        public bool? NoPreviousMonetaryDiscountAllowedFlag { get; set; }

        /// <summary>
        /// &lt;p&gt;This flag decides whether a promotion price derivation rule or a particular price is allowed to increase the price in comparison to the latest calculated discount sales price.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Possible values:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;true: price increase is allowed. In this case, the promotion price derivation rule is applied even though the item costs afterwards more than before.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;false: price increase is not allowed. In this case, the promotion price derivation rule is not applied without any thrown business error or indicator why.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;This flag decides whether a promotion price derivation rule or a particular price is allowed to increase the price in comparison to the latest calculated discount sales price.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Possible values:&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;true: price increase is allowed. In this case, the promotion price derivation rule is applied even though the item costs afterwards more than before.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;false: price increase is not allowed. In this case, the promotion price derivation rule is not applied without any thrown business error or indicator why.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        [DataMember(Name="increasePriceAllowedFlag", EmitDefaultValue=false)]
        public bool? IncreasePriceAllowedFlag { get; set; }

        /// <summary>
        /// &lt;p&gt;For measured items (e.g. pre-packed weighed items), the package limit quantity limits the maximum package count that can receive a benefit. A price derivation rule containing a package limit quantity being not null and greater than zero can be applied to measured items only, but not to piece items.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;For measured items (e.g. pre-packed weighed items), the package limit quantity limits the maximum package count that can receive a benefit. A price derivation rule containing a package limit quantity being not null and greater than zero can be applied to measured items only, but not to piece items.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="packageLimitQuantity", EmitDefaultValue=false)]
        public int? PackageLimitQuantity { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom08", EmitDefaultValue=false)]
        public string Xxcustom08 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom10", EmitDefaultValue=false)]
        public string Xxcustom10 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom09", EmitDefaultValue=false)]
        public string Xxcustom09 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom07", EmitDefaultValue=false)]
        public string Xxcustom07 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom05", EmitDefaultValue=false)]
        public string Xxcustom05 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom06", EmitDefaultValue=false)]
        public string Xxcustom06 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom11", EmitDefaultValue=false)]
        public string Xxcustom11 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom12", EmitDefaultValue=false)]
        public string Xxcustom12 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom13", EmitDefaultValue=false)]
        public string Xxcustom13 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom14", EmitDefaultValue=false)]
        public string Xxcustom14 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom15", EmitDefaultValue=false)]
        public string Xxcustom15 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom03", EmitDefaultValue=false)]
        public string Xxcustom03 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom02", EmitDefaultValue=false)]
        public string Xxcustom02 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom04", EmitDefaultValue=false)]
        public string Xxcustom04 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom16", EmitDefaultValue=false)]
        public string Xxcustom16 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom17", EmitDefaultValue=false)]
        public string Xxcustom17 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom18", EmitDefaultValue=false)]
        public string Xxcustom18 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom19", EmitDefaultValue=false)]
        public string Xxcustom19 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom20", EmitDefaultValue=false)]
        public string Xxcustom20 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom21", EmitDefaultValue=false)]
        public string Xxcustom21 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom22", EmitDefaultValue=false)]
        public string Xxcustom22 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom23", EmitDefaultValue=false)]
        public string Xxcustom23 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom24", EmitDefaultValue=false)]
        public string Xxcustom24 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom25", EmitDefaultValue=false)]
        public string Xxcustom25 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom26", EmitDefaultValue=false)]
        public string Xxcustom26 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom27", EmitDefaultValue=false)]
        public string Xxcustom27 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom28", EmitDefaultValue=false)]
        public string Xxcustom28 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom29", EmitDefaultValue=false)]
        public string Xxcustom29 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;</value>
        [DataMember(Name="xxcustom30", EmitDefaultValue=false)]
        public string Xxcustom30 { get; set; }

        /// <summary>
        /// &lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Additional field for custom development.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Import from masterdata_Promotion_SE.xml only.&lt;br /&gt;&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 ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO {\n");
            sb.Append("  InternalRuleID: ").Append(InternalRuleID).Append("\n");
            sb.Append("  Name: ").Append(Name).Append("\n");
            sb.Append("  Description: ").Append(Description).Append("\n");
            sb.Append("  TransactionControlBreakCode: ").Append(TransactionControlBreakCode).Append("\n");
            sb.Append("  StatusCode: ").Append(StatusCode).Append("\n");
            sb.Append("  TypeCode: ").Append(TypeCode).Append("\n");
            sb.Append("  RuleID: ").Append(RuleID).Append("\n");
            sb.Append("  BonusPointsFlag: ").Append(BonusPointsFlag).Append("\n");
            sb.Append("  RoundingMethodCode: ").Append(RoundingMethodCode).Append("\n");
            sb.Append("  DecimalPlacesCount: ").Append(DecimalPlacesCount).Append("\n");
            sb.Append("  RoundDestinationValue: ").Append(RoundDestinationValue).Append("\n");
            sb.Append("  DiscountMethodCode: ").Append(DiscountMethodCode).Append("\n");
            sb.Append("  GiftCertificateExpirationDate: ").Append(GiftCertificateExpirationDate).Append("\n");
            sb.Append("  TenderTypeCode: ").Append(TenderTypeCode).Append("\n");
            sb.Append("  ProhibitTransactionRelatedPromotionConditionFlag: ").Append(ProhibitTransactionRelatedPromotionConditionFlag).Append("\n");
            sb.Append("  ChooseItemMethod: ").Append(ChooseItemMethod).Append("\n");
            sb.Append("  NoEffectOnSubsequentPromotionConditionFlag: ").Append(NoEffectOnSubsequentPromotionConditionFlag).Append("\n");
            sb.Append("  CalculationBase: ").Append(CalculationBase).Append("\n");
            sb.Append("  CouponPrintoutID: ").Append(CouponPrintoutID).Append("\n");
            sb.Append("  CouponPrintoutRule: ").Append(CouponPrintoutRule).Append("\n");
            sb.Append("  CouponPrintoutText: ").Append(CouponPrintoutText).Append("\n");
            sb.Append("  ConsiderPreviousPromotionConditionFlag: ").Append(ConsiderPreviousPromotionConditionFlag).Append("\n");
            sb.Append("  PrintoutValidityPeriod: ").Append(PrintoutValidityPeriod).Append("\n");
            sb.Append("  Tid: ").Append(Tid).Append("\n");
            sb.Append("  PromotionConditionRuleTranslationList: ").Append(PromotionConditionRuleTranslationList).Append("\n");
            sb.Append("  ExternalConditionRuleID: ").Append(ExternalConditionRuleID).Append("\n");
            sb.Append("  CalculationBaseSequence: ").Append(CalculationBaseSequence).Append("\n");
            sb.Append("  RoundingRuleID: ").Append(RoundingRuleID).Append("\n");
            sb.Append("  ShareRoundingRuleID: ").Append(ShareRoundingRuleID).Append("\n");
            sb.Append("  PointsAmountRoundingRuleID: ").Append(PointsAmountRoundingRuleID).Append("\n");
            sb.Append("  NoPreviousMonetaryDiscountAllowedFlag: ").Append(NoPreviousMonetaryDiscountAllowedFlag).Append("\n");
            sb.Append("  IncreasePriceAllowedFlag: ").Append(IncreasePriceAllowedFlag).Append("\n");
            sb.Append("  PackageLimitQuantity: ").Append(PackageLimitQuantity).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("  Xxcustom16: ").Append(Xxcustom16).Append("\n");
            sb.Append("  Xxcustom17: ").Append(Xxcustom17).Append("\n");
            sb.Append("  Xxcustom18: ").Append(Xxcustom18).Append("\n");
            sb.Append("  Xxcustom19: ").Append(Xxcustom19).Append("\n");
            sb.Append("  Xxcustom20: ").Append(Xxcustom20).Append("\n");
            sb.Append("  Xxcustom21: ").Append(Xxcustom21).Append("\n");
            sb.Append("  Xxcustom22: ").Append(Xxcustom22).Append("\n");
            sb.Append("  Xxcustom23: ").Append(Xxcustom23).Append("\n");
            sb.Append("  Xxcustom24: ").Append(Xxcustom24).Append("\n");
            sb.Append("  Xxcustom25: ").Append(Xxcustom25).Append("\n");
            sb.Append("  Xxcustom26: ").Append(Xxcustom26).Append("\n");
            sb.Append("  Xxcustom27: ").Append(Xxcustom27).Append("\n");
            sb.Append("  Xxcustom28: ").Append(Xxcustom28).Append("\n");
            sb.Append("  Xxcustom29: ").Append(Xxcustom29).Append("\n");
            sb.Append("  Xxcustom30: ").Append(Xxcustom30).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 ComGkSoftwareSweeSesApiServerMdPromotionDtoSoPromotionConditionRuleSO);
        }

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

            return 
                (
                    this.InternalRuleID == input.InternalRuleID ||
                    (this.InternalRuleID != null &&
                    this.InternalRuleID.Equals(input.InternalRuleID))
                ) && 
                (
                    this.Name == input.Name ||
                    (this.Name != null &&
                    this.Name.Equals(input.Name))
                ) && 
                (
                    this.Description == input.Description ||
                    (this.Description != null &&
                    this.Description.Equals(input.Description))
                ) && 
                (
                    this.TransactionControlBreakCode == input.TransactionControlBreakCode ||
                    (this.TransactionControlBreakCode != null &&
                    this.TransactionControlBreakCode.Equals(input.TransactionControlBreakCode))
                ) && 
                (
                    this.StatusCode == input.StatusCode ||
                    (this.StatusCode != null &&
                    this.StatusCode.Equals(input.StatusCode))
                ) && 
                (
                    this.TypeCode == input.TypeCode ||
                    (this.TypeCode != null &&
                    this.TypeCode.Equals(input.TypeCode))
                ) && 
                (
                    this.RuleID == input.RuleID ||
                    (this.RuleID != null &&
                    this.RuleID.Equals(input.RuleID))
                ) && 
                (
                    this.BonusPointsFlag == input.BonusPointsFlag ||
                    (this.BonusPointsFlag != null &&
                    this.BonusPointsFlag.Equals(input.BonusPointsFlag))
                ) && 
                (
                    this.RoundingMethodCode == input.RoundingMethodCode ||
                    (this.RoundingMethodCode != null &&
                    this.RoundingMethodCode.Equals(input.RoundingMethodCode))
                ) && 
                (
                    this.DecimalPlacesCount == input.DecimalPlacesCount ||
                    (this.DecimalPlacesCount != null &&
                    this.DecimalPlacesCount.Equals(input.DecimalPlacesCount))
                ) && 
                (
                    this.RoundDestinationValue == input.RoundDestinationValue ||
                    (this.RoundDestinationValue != null &&
                    this.RoundDestinationValue.Equals(input.RoundDestinationValue))
                ) && 
                (
                    this.DiscountMethodCode == input.DiscountMethodCode ||
                    (this.DiscountMethodCode != null &&
                    this.DiscountMethodCode.Equals(input.DiscountMethodCode))
                ) && 
                (
                    this.GiftCertificateExpirationDate == input.GiftCertificateExpirationDate ||
                    (this.GiftCertificateExpirationDate != null &&
                    this.GiftCertificateExpirationDate.Equals(input.GiftCertificateExpirationDate))
                ) && 
                (
                    this.TenderTypeCode == input.TenderTypeCode ||
                    (this.TenderTypeCode != null &&
                    this.TenderTypeCode.Equals(input.TenderTypeCode))
                ) && 
                (
                    this.ProhibitTransactionRelatedPromotionConditionFlag == input.ProhibitTransactionRelatedPromotionConditionFlag ||
                    (this.ProhibitTransactionRelatedPromotionConditionFlag != null &&
                    this.ProhibitTransactionRelatedPromotionConditionFlag.Equals(input.ProhibitTransactionRelatedPromotionConditionFlag))
                ) && 
                (
                    this.ChooseItemMethod == input.ChooseItemMethod ||
                    (this.ChooseItemMethod != null &&
                    this.ChooseItemMethod.Equals(input.ChooseItemMethod))
                ) && 
                (
                    this.NoEffectOnSubsequentPromotionConditionFlag == input.NoEffectOnSubsequentPromotionConditionFlag ||
                    (this.NoEffectOnSubsequentPromotionConditionFlag != null &&
                    this.NoEffectOnSubsequentPromotionConditionFlag.Equals(input.NoEffectOnSubsequentPromotionConditionFlag))
                ) && 
                (
                    this.CalculationBase == input.CalculationBase ||
                    (this.CalculationBase != null &&
                    this.CalculationBase.Equals(input.CalculationBase))
                ) && 
                (
                    this.CouponPrintoutID == input.CouponPrintoutID ||
                    (this.CouponPrintoutID != null &&
                    this.CouponPrintoutID.Equals(input.CouponPrintoutID))
                ) && 
                (
                    this.CouponPrintoutRule == input.CouponPrintoutRule ||
                    (this.CouponPrintoutRule != null &&
                    this.CouponPrintoutRule.Equals(input.CouponPrintoutRule))
                ) && 
                (
                    this.CouponPrintoutText == input.CouponPrintoutText ||
                    (this.CouponPrintoutText != null &&
                    this.CouponPrintoutText.Equals(input.CouponPrintoutText))
                ) && 
                (
                    this.ConsiderPreviousPromotionConditionFlag == input.ConsiderPreviousPromotionConditionFlag ||
                    (this.ConsiderPreviousPromotionConditionFlag != null &&
                    this.ConsiderPreviousPromotionConditionFlag.Equals(input.ConsiderPreviousPromotionConditionFlag))
                ) && 
                (
                    this.PrintoutValidityPeriod == input.PrintoutValidityPeriod ||
                    (this.PrintoutValidityPeriod != null &&
                    this.PrintoutValidityPeriod.Equals(input.PrintoutValidityPeriod))
                ) && 
                (
                    this.Tid == input.Tid ||
                    (this.Tid != null &&
                    this.Tid.Equals(input.Tid))
                ) && 
                (
                    this.PromotionConditionRuleTranslationList == input.PromotionConditionRuleTranslationList ||
                    this.PromotionConditionRuleTranslationList != null &&
                    this.PromotionConditionRuleTranslationList.SequenceEqual(input.PromotionConditionRuleTranslationList)
                ) && 
                (
                    this.ExternalConditionRuleID == input.ExternalConditionRuleID ||
                    (this.ExternalConditionRuleID != null &&
                    this.ExternalConditionRuleID.Equals(input.ExternalConditionRuleID))
                ) && 
                (
                    this.CalculationBaseSequence == input.CalculationBaseSequence ||
                    (this.CalculationBaseSequence != null &&
                    this.CalculationBaseSequence.Equals(input.CalculationBaseSequence))
                ) && 
                (
                    this.RoundingRuleID == input.RoundingRuleID ||
                    (this.RoundingRuleID != null &&
                    this.RoundingRuleID.Equals(input.RoundingRuleID))
                ) && 
                (
                    this.ShareRoundingRuleID == input.ShareRoundingRuleID ||
                    (this.ShareRoundingRuleID != null &&
                    this.ShareRoundingRuleID.Equals(input.ShareRoundingRuleID))
                ) && 
                (
                    this.PointsAmountRoundingRuleID == input.PointsAmountRoundingRuleID ||
                    (this.PointsAmountRoundingRuleID != null &&
                    this.PointsAmountRoundingRuleID.Equals(input.PointsAmountRoundingRuleID))
                ) && 
                (
                    this.NoPreviousMonetaryDiscountAllowedFlag == input.NoPreviousMonetaryDiscountAllowedFlag ||
                    (this.NoPreviousMonetaryDiscountAllowedFlag != null &&
                    this.NoPreviousMonetaryDiscountAllowedFlag.Equals(input.NoPreviousMonetaryDiscountAllowedFlag))
                ) && 
                (
                    this.IncreasePriceAllowedFlag == input.IncreasePriceAllowedFlag ||
                    (this.IncreasePriceAllowedFlag != null &&
                    this.IncreasePriceAllowedFlag.Equals(input.IncreasePriceAllowedFlag))
                ) && 
                (
                    this.PackageLimitQuantity == input.PackageLimitQuantity ||
                    (this.PackageLimitQuantity != null &&
                    this.PackageLimitQuantity.Equals(input.PackageLimitQuantity))
                ) && 
                (
                    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.Xxcustom16 == input.Xxcustom16 ||
                    (this.Xxcustom16 != null &&
                    this.Xxcustom16.Equals(input.Xxcustom16))
                ) && 
                (
                    this.Xxcustom17 == input.Xxcustom17 ||
                    (this.Xxcustom17 != null &&
                    this.Xxcustom17.Equals(input.Xxcustom17))
                ) && 
                (
                    this.Xxcustom18 == input.Xxcustom18 ||
                    (this.Xxcustom18 != null &&
                    this.Xxcustom18.Equals(input.Xxcustom18))
                ) && 
                (
                    this.Xxcustom19 == input.Xxcustom19 ||
                    (this.Xxcustom19 != null &&
                    this.Xxcustom19.Equals(input.Xxcustom19))
                ) && 
                (
                    this.Xxcustom20 == input.Xxcustom20 ||
                    (this.Xxcustom20 != null &&
                    this.Xxcustom20.Equals(input.Xxcustom20))
                ) && 
                (
                    this.Xxcustom21 == input.Xxcustom21 ||
                    (this.Xxcustom21 != null &&
                    this.Xxcustom21.Equals(input.Xxcustom21))
                ) && 
                (
                    this.Xxcustom22 == input.Xxcustom22 ||
                    (this.Xxcustom22 != null &&
                    this.Xxcustom22.Equals(input.Xxcustom22))
                ) && 
                (
                    this.Xxcustom23 == input.Xxcustom23 ||
                    (this.Xxcustom23 != null &&
                    this.Xxcustom23.Equals(input.Xxcustom23))
                ) && 
                (
                    this.Xxcustom24 == input.Xxcustom24 ||
                    (this.Xxcustom24 != null &&
                    this.Xxcustom24.Equals(input.Xxcustom24))
                ) && 
                (
                    this.Xxcustom25 == input.Xxcustom25 ||
                    (this.Xxcustom25 != null &&
                    this.Xxcustom25.Equals(input.Xxcustom25))
                ) && 
                (
                    this.Xxcustom26 == input.Xxcustom26 ||
                    (this.Xxcustom26 != null &&
                    this.Xxcustom26.Equals(input.Xxcustom26))
                ) && 
                (
                    this.Xxcustom27 == input.Xxcustom27 ||
                    (this.Xxcustom27 != null &&
                    this.Xxcustom27.Equals(input.Xxcustom27))
                ) && 
                (
                    this.Xxcustom28 == input.Xxcustom28 ||
                    (this.Xxcustom28 != null &&
                    this.Xxcustom28.Equals(input.Xxcustom28))
                ) && 
                (
                    this.Xxcustom29 == input.Xxcustom29 ||
                    (this.Xxcustom29 != null &&
                    this.Xxcustom29.Equals(input.Xxcustom29))
                ) && 
                (
                    this.Xxcustom30 == input.Xxcustom30 ||
                    (this.Xxcustom30 != null &&
                    this.Xxcustom30.Equals(input.Xxcustom30))
                ) && 
                (
                    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.InternalRuleID != null)
                    hashCode = hashCode * 59 + this.InternalRuleID.GetHashCode();
                if (this.Name != null)
                    hashCode = hashCode * 59 + this.Name.GetHashCode();
                if (this.Description != null)
                    hashCode = hashCode * 59 + this.Description.GetHashCode();
                if (this.TransactionControlBreakCode != null)
                    hashCode = hashCode * 59 + this.TransactionControlBreakCode.GetHashCode();
                if (this.StatusCode != null)
                    hashCode = hashCode * 59 + this.StatusCode.GetHashCode();
                if (this.TypeCode != null)
                    hashCode = hashCode * 59 + this.TypeCode.GetHashCode();
                if (this.RuleID != null)
                    hashCode = hashCode * 59 + this.RuleID.GetHashCode();
                if (this.BonusPointsFlag != null)
                    hashCode = hashCode * 59 + this.BonusPointsFlag.GetHashCode();
                if (this.RoundingMethodCode != null)
                    hashCode = hashCode * 59 + this.RoundingMethodCode.GetHashCode();
                if (this.DecimalPlacesCount != null)
                    hashCode = hashCode * 59 + this.DecimalPlacesCount.GetHashCode();
                if (this.RoundDestinationValue != null)
                    hashCode = hashCode * 59 + this.RoundDestinationValue.GetHashCode();
                if (this.DiscountMethodCode != null)
                    hashCode = hashCode * 59 + this.DiscountMethodCode.GetHashCode();
                if (this.GiftCertificateExpirationDate != null)
                    hashCode = hashCode * 59 + this.GiftCertificateExpirationDate.GetHashCode();
                if (this.TenderTypeCode != null)
                    hashCode = hashCode * 59 + this.TenderTypeCode.GetHashCode();
                if (this.ProhibitTransactionRelatedPromotionConditionFlag != null)
                    hashCode = hashCode * 59 + this.ProhibitTransactionRelatedPromotionConditionFlag.GetHashCode();
                if (this.ChooseItemMethod != null)
                    hashCode = hashCode * 59 + this.ChooseItemMethod.GetHashCode();
                if (this.NoEffectOnSubsequentPromotionConditionFlag != null)
                    hashCode = hashCode * 59 + this.NoEffectOnSubsequentPromotionConditionFlag.GetHashCode();
                if (this.CalculationBase != null)
                    hashCode = hashCode * 59 + this.CalculationBase.GetHashCode();
                if (this.CouponPrintoutID != null)
                    hashCode = hashCode * 59 + this.CouponPrintoutID.GetHashCode();
                if (this.CouponPrintoutRule != null)
                    hashCode = hashCode * 59 + this.CouponPrintoutRule.GetHashCode();
                if (this.CouponPrintoutText != null)
                    hashCode = hashCode * 59 + this.CouponPrintoutText.GetHashCode();
                if (this.ConsiderPreviousPromotionConditionFlag != null)
                    hashCode = hashCode * 59 + this.ConsiderPreviousPromotionConditionFlag.GetHashCode();
                if (this.PrintoutValidityPeriod != null)
                    hashCode = hashCode * 59 + this.PrintoutValidityPeriod.GetHashCode();
                if (this.Tid != null)
                    hashCode = hashCode * 59 + this.Tid.GetHashCode();
                if (this.PromotionConditionRuleTranslationList != null)
                    hashCode = hashCode * 59 + this.PromotionConditionRuleTranslationList.GetHashCode();
                if (this.ExternalConditionRuleID != null)
                    hashCode = hashCode * 59 + this.ExternalConditionRuleID.GetHashCode();
                if (this.CalculationBaseSequence != null)
                    hashCode = hashCode * 59 + this.CalculationBaseSequence.GetHashCode();
                if (this.RoundingRuleID != null)
                    hashCode = hashCode * 59 + this.RoundingRuleID.GetHashCode();
                if (this.ShareRoundingRuleID != null)
                    hashCode = hashCode * 59 + this.ShareRoundingRuleID.GetHashCode();
                if (this.PointsAmountRoundingRuleID != null)
                    hashCode = hashCode * 59 + this.PointsAmountRoundingRuleID.GetHashCode();
                if (this.NoPreviousMonetaryDiscountAllowedFlag != null)
                    hashCode = hashCode * 59 + this.NoPreviousMonetaryDiscountAllowedFlag.GetHashCode();
                if (this.IncreasePriceAllowedFlag != null)
                    hashCode = hashCode * 59 + this.IncreasePriceAllowedFlag.GetHashCode();
                if (this.PackageLimitQuantity != null)
                    hashCode = hashCode * 59 + this.PackageLimitQuantity.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.Xxcustom16 != null)
                    hashCode = hashCode * 59 + this.Xxcustom16.GetHashCode();
                if (this.Xxcustom17 != null)
                    hashCode = hashCode * 59 + this.Xxcustom17.GetHashCode();
                if (this.Xxcustom18 != null)
                    hashCode = hashCode * 59 + this.Xxcustom18.GetHashCode();
                if (this.Xxcustom19 != null)
                    hashCode = hashCode * 59 + this.Xxcustom19.GetHashCode();
                if (this.Xxcustom20 != null)
                    hashCode = hashCode * 59 + this.Xxcustom20.GetHashCode();
                if (this.Xxcustom21 != null)
                    hashCode = hashCode * 59 + this.Xxcustom21.GetHashCode();
                if (this.Xxcustom22 != null)
                    hashCode = hashCode * 59 + this.Xxcustom22.GetHashCode();
                if (this.Xxcustom23 != null)
                    hashCode = hashCode * 59 + this.Xxcustom23.GetHashCode();
                if (this.Xxcustom24 != null)
                    hashCode = hashCode * 59 + this.Xxcustom24.GetHashCode();
                if (this.Xxcustom25 != null)
                    hashCode = hashCode * 59 + this.Xxcustom25.GetHashCode();
                if (this.Xxcustom26 != null)
                    hashCode = hashCode * 59 + this.Xxcustom26.GetHashCode();
                if (this.Xxcustom27 != null)
                    hashCode = hashCode * 59 + this.Xxcustom27.GetHashCode();
                if (this.Xxcustom28 != null)
                    hashCode = hashCode * 59 + this.Xxcustom28.GetHashCode();
                if (this.Xxcustom29 != null)
                    hashCode = hashCode * 59 + this.Xxcustom29.GetHashCode();
                if (this.Xxcustom30 != null)
                    hashCode = hashCode * 59 + this.Xxcustom30.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;
        }
    }

}
