namespace POSGkSwaggerModel
{
    /// <summary>
    /// RetailTransactionPromotionPriceDerivationRule &lt;emph&gt;undocumented&lt;/emph&gt;
    /// </summary>
    public record comGkSoftwareGkrApiTxpoolDtoRetailTransactionPromotionPriceDerivationRule	{
        /// <summary>
        /// &lt;p&gt;Getter for inner key class.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Getter for inner key class.&lt;/p&gt;</value>
        public ComGkSoftwareGkrApiTxpoolDtoRetailTransactionPromotionPriceDerivationRulekey key { get; init; }
        /// <summary>
        /// Short description of the promotion 
        /// </summary>
        /// <value>Short description of the promotion </value>
        public string promotionDescription { get; init; }
        /// <summary>
        /// Text to be printed on the receipt 
        /// </summary>
        /// <value>Text to be printed on the receipt </value>
        public string receiptPrinterName { get; init; }
        /// <summary>
        /// Sequence - for collision handling 
        /// </summary>
        /// <value>Sequence - for collision handling </value>
        public string promotionPriceDerivationRuleSequence { get; init; }
        /// <summary>
        /// Resolution - for collision handling 
        /// </summary>
        /// <value>Resolution - for collision handling </value>
        public string promotionPriceDerivationRuleResolution { get; init; }
        /// <summary>
        /// The typecode of the promotion price derivation rule 
        /// </summary>
        /// <value>The typecode of the promotion price derivation rule </value>
        public string promotionPriceDerivationRuleTypeCode { get; init; }
        /// <summary>
        /// This type code defines the base for applying the condition and it defines the calculation time.
        /// </summary>
        /// <value>This type code defines the base for applying the condition and it defines the calculation time.</value>
        public string transactionControlBreakCode { get; init; }
        /// <summary>
        /// A code denoting the method of modifying the price that is being applied to the transaction resp. line item 
        /// </summary>
        /// <value>A code denoting the method of modifying the price that is being applied to the transaction resp. line item </value>
        public string priceModificationMethodCode { get; init; }
        /// <summary>
        /// Business description for this price derivation rule. 
        /// </summary>
        /// <value>Business description for this price derivation rule. </value>
        public string priceDerivationRuleDescription { get; init; }
        /// <summary>
        /// The typecode of the originator of the promotion 
        /// </summary>
        /// <value>The typecode of the originator of the promotion </value>
        public string promotionOriginatorTypeCode { get; init; }
        /// <summary>
        /// The external identifier of the promotion 
        /// </summary>
        /// <value>The external identifier of the promotion </value>
        public string externalPromotionID { get; init; }
        /// <summary>
        /// The external identifier of the price derivation rule 
        /// </summary>
        /// <value>The external identifier of the price derivation rule </value>
        public string externalPriceDerivationRuleID { get; init; }
        /// <summary>
        /// The quantity of items fulfilling the eligibility which is required to be purchased to trigger the price derivation rule. 
        /// </summary>
        /// <value>The quantity of items fulfilling the eligibility which is required to be purchased to trigger the price derivation rule. </value>
        public double? triggerQuantity { get; init; }
        /// <summary>
        /// End of the date range in which the gift certificate is valid ; Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone)
        /// </summary>
        /// <value>End of the date range in which the gift certificate is valid ; Date format &#39;yyyy-MM-dd&#39;T&#39;HH:mm:ss.SSS&#39; (no timezone)</value>
        public string giftCertificateExpirationDate { get; init; }
        /// <summary>
        /// Determines how the discount influences the transaction.
        /// </summary>
        /// <value>Determines how the discount influences the transaction.</value>
        public string discountMethodCode { get; init; }
        /// <summary>
        /// Determines whether disocunt or frequent shopper points are awarded by the price derivation rule 
        /// </summary>
        /// <value>Determines whether disocunt or frequent shopper points are awarded by the price derivation rule </value>
        public bool? frequentShopperPointsFlag { get; init; }
        /// <summary>
        /// The count of default loyalty points assigned to the customer group 
        /// </summary>
        /// <value>The count of default loyalty points assigned to the customer group </value>
        public double? customerGroupLoyaltyPointsDefaultQuantity { get; init; }
        /// <summary>
        /// Determines whether the result of the applied price derivation rule is to be suppressed on displays / not printed on the receipt; e.g. line item-related default points are not printed after each position, but only summarized at the end of the receipt 
        /// </summary>
        /// <value>Determines whether the result of the applied price derivation rule is to be suppressed on displays / not printed on the receipt; e.g. line item-related default points are not printed after each position, but only summarized at the end of the receipt </value>
        public bool? prohibitPrintFlag { get; init; }
        /// <summary>
        /// A code which uniquely identifies the tender in case of rebate as tender.
        /// </summary>
        /// <value>A code which uniquely identifies the tender in case of rebate as tender.</value>
        public string tenderTypeCode { get; init; }
        /// <summary>
        /// Promotion type name 
        /// </summary>
        /// <value>Promotion type name </value>
        public string promotionTypeName { get; init; }
        /// <summary>
        /// Defines the calculation base for transaction related discounts.
        /// </summary>
        /// <value>Defines the calculation base for transaction related discounts.</value>
        public string calculationBase { get; init; }
        /// <summary>
        /// Exchange rate for the conversion from points into local currency 
        /// </summary>
        /// <value>Exchange rate for the conversion from points into local currency </value>
        public double? pointsConversionAmount { get; init; }
        /// <summary>
        /// Determines whether applying this price derivation rule influences the calculation base of subsequent price derivation rules (false) or not (true).
        /// </summary>
        /// <value>Determines whether applying this price derivation rule influences the calculation base of subsequent price derivation rules (false) or not (true).</value>
        public bool? noEffectOnSubsequentPriceDerivationRulesFlag { get; init; }
        /// <summary>
        /// Determines whether applying this price derivation rule influences the calculation base of subsequent transaction-related price derivation rules (false) or not (true); is relevant for line item-related &#39;money&#39; price derivation rules only 
        /// </summary>
        /// <value>Determines whether applying this price derivation rule influences the calculation base of subsequent transaction-related price derivation rules (false) or not (true); is relevant for line item-related &#39;money&#39; price derivation rules only </value>
        public bool? prohibitTransactionRelatedPriceDerivationRulesFlag { get; init; }
        /// <summary>
        /// The number of the printout coupon 
        /// </summary>
        /// <value>The number of the printout coupon </value>
        public string couponPrintoutID { get; init; }
        /// <summary>
        /// The type code of the printout rule.
        /// </summary>
        /// <value>The type code of the printout rule.</value>
        public string couponPrintoutRule { get; init; }
        /// <summary>
        /// The formatted text of the printout coupon 
        /// </summary>
        /// <value>The formatted text of the printout coupon </value>
        public Object couponPrintoutText { get; init; }
        /// <summary>
        /// Determines whether this price derivation rule is an exclusive one 
        /// </summary>
        /// <value>Determines whether this price derivation rule is an exclusive one </value>
        public bool? exclusiveFlag { get; init; }
        /// <summary>
        /// Determines whether an additional user interaction (pressing a button) is necessary in order to fulfill the eligibility for applying the price derivation rule 
        /// </summary>
        /// <value>Determines whether an additional user interaction (pressing a button) is necessary in order to fulfill the eligibility for applying the price derivation rule </value>
        public bool? requireUserInteractionFlag { get; init; }
        /// <summary>
        /// Indicates whether all price derivation rules which were applied before are to be considered (true) or not (false).
        /// </summary>
        /// <value>Indicates whether all price derivation rules which were applied before are to be considered (true) or not (false).</value>
        public bool? considerPreviousPriceDerivationRulesFlag { get; init; }
        /// <summary>
        /// Determines how this price derivation rule works in relation to other applicable price derivation rules 
        /// </summary>
        /// <value>Determines how this price derivation rule works in relation to other applicable price derivation rules </value>
        public string concurrenceControlVector { get; init; }
        /// <summary>
        /// Describes how often the current price derivation rule was applied 
        /// </summary>
        /// <value>Describes how often the current price derivation rule was applied </value>
        public double? appliedCount { get; init; }
        /// <summary>
        /// Describes how long (how many days) the printed coupon/gift certificate is valid 
        /// </summary>
        /// <value>Describes how long (how many days) the printed coupon/gift certificate is valid </value>
        public double? printoutValidityPeriod { get; init; }
        /// <summary>
        /// The ident of the action which is to be performed by the client which invoked the pricing engine
        /// </summary>
        /// <value>The ident of the action which is to be performed by the client which invoked the pricing engine</value>
        public string externalActionID { get; init; }
        /// <summary>
        /// The description of the action which is to be performed by the client which invoked the pricing engine
        /// </summary>
        /// <value>The description of the action which is to be performed by the client which invoked the pricing engine</value>
        public string externalActionDescription { get; init; }
        /// <summary>
        /// The texts for the action which is to be performed by the client which invoked the pricing engine
        /// </summary>
        /// <value>The texts for the action which is to be performed by the client which invoked the pricing engine</value>
        public List<comGkSoftwareGkrApiTxpoolDtoRetailTransactionPromotionExternalActionText> ExternalActionTextList { get; init; }
        /// <summary>
        /// The parameters for the action which is to be performed by the client which invoked the pricing engine
        /// </summary>
        /// <value>The parameters for the action which is to be performed by the client which invoked the pricing engine</value>
        public List<comGkSoftwareGkrApiTxpoolDtoRetailTransactionPromotionExternalActionParameter> ExternalActionParameterList { get; init; }
        /// <summary>
        /// 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:- In case that no price derivation rules were applied before, it is the original price/total.- 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. - 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 &lt;&#x3D; CalculationBaseSequence (or the original price if no such price derivation rule was applied).
        /// </summary>
        /// <value>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:- In case that no price derivation rules were applied before, it is the original price/total.- 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. - 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 &lt;&#x3D; CalculationBaseSequence (or the original price if no such price derivation rule was applied).</value>
        public string calculationBaseSequence { get; init; }
        /// <summary>
        /// Another external ident of the promotion.It is needed by/known to the retailer.
        /// </summary>
        /// <value>Another external ident of the promotion.It is needed by/known to the retailer.</value>
        public string externalOfferID { get; init; }
        /// <summary>
        /// The price type code of the additional price which got applied
        /// </summary>
        /// <value>The price type code of the additional price which got applied</value>
        public string additionalPriceTypeCode { get; init; }
        /// <summary>
        /// Customizable information
        /// </summary>
        /// <value>Customizable information</value>
        public string xxcustom08 { get; init; }
        /// <summary>
        /// Customizable information
        /// </summary>
        /// <value>Customizable information</value>
        public string xxcustom10 { get; init; }
        /// <summary>
        /// Customizable information
        /// </summary>
        /// <value>Customizable information</value>
        public string xxcustom09 { get; init; }
        /// <summary>
        /// Customizable information
        /// </summary>
        /// <value>Customizable information</value>
        public string xxcustom07 { get; init; }
        /// <summary>
        /// Customizable information
        /// </summary>
        /// <value>Customizable information</value>
        public string xxcustom05 { get; init; }
        /// <summary>
        /// Customizable information
        /// </summary>
        /// <value>Customizable information</value>
        public string xxcustom06 { get; init; }
        /// <summary>
        /// Customizable information
        /// </summary>
        /// <value>Customizable information</value>
        public string xxcustom11 { get; init; }
        /// <summary>
        /// Customizable information
        /// </summary>
        /// <value>Customizable information</value>
        public string xxcustom12 { get; init; }
        /// <summary>
        /// Customizable information
        /// </summary>
        /// <value>Customizable information</value>
        public string xxcustom13 { get; init; }
        /// <summary>
        /// Customizable information
        /// </summary>
        /// <value>Customizable information</value>
        public string xxcustom14 { get; init; }
        /// <summary>
        /// Customizable information
        /// </summary>
        /// <value>Customizable information</value>
        public string xxcustom15 { get; init; }
        /// <summary>
        /// Customizable information
        /// </summary>
        /// <value>Customizable information</value>
        public string xxcustom03 { get; init; }
        /// <summary>
        /// Customizable information
        /// </summary>
        /// <value>Customizable information</value>
        public string xxcustom02 { get; init; }
        /// <summary>
        /// Customizable information
        /// </summary>
        /// <value>Customizable information</value>
        public string xxcustom04 { get; init; }
        /// <summary>
        /// Customizable information
        /// </summary>
        /// <value>Customizable information</value>
        public string xxcustom01 { get; init; }
	}
}
