namespace POSGkSwaggerModel
{
    /// <summary>
    /// PromotionRequest &lt;p&gt;Request object for a promotion trigger process.&lt;/p&gt;
    /// </summary>
    public record comGkSoftwarePosApiServicePromotionPromotionRequest	{
        /// <summary>
        /// &lt;p&gt;The position operation configuration.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The position operation configuration.&lt;/p&gt;</value>
        public ComGkSoftwarePosApiModelConfigProcessActionPositionOperationConfig operationConfiguration { get; init; }
        /// <summary>
        /// &lt;p&gt;The line item key the operation refers to.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The line item key the operation refers to.&lt;/p&gt;</value>
        public ComGkSoftwarePosApiModelDomAppServicesTransactionRetailTransactionlineItemKey lineItemKey { get; init; }
        /// <summary>
        /// &lt;p&gt;Indicated whether the item should be returned or registered.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Indicated whether the item should be returned or registered.&lt;/p&gt;</value>
        public bool? returnMode { get; init; }
        /// <summary>
        /// &lt;p&gt;Flag indicating client is in empties return mode.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Flag indicating client is in empties return mode.&lt;/p&gt;</value>
        public bool? emptiesReturnMode { get; init; }
        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a return receipt should be created for returned items.&lt;br /&gt; This has only an impact in case returnMode&#x3D;true.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies whether a return receipt should be created for returned items.&lt;br /&gt; This has only an impact in case returnMode&#x3D;true.&lt;/p&gt;</value>
        public bool? createReturnReceipt { get; init; }
        /// <summary>
        /// &lt;p&gt;Promotion configuration used for checking line item promotion triggers.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Promotion configuration used for checking line item promotion triggers.&lt;/p&gt;</value>
        public ComGkSoftwarePosApiModelConfigProcessActionpromotionOperationConfig promotionOperationConfig { get; init; }
        /// <summary>
        /// &lt;p&gt;Object describing the reason of a promotion.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Object describing the reason of a promotion.&lt;/p&gt;</value>
        public ComGkSoftwareSweeSesApiServerMdreasonDtoSoreasonSO reason { get; init; }
        /// <summary>
        /// &lt;p&gt;An additional information concerning the promotion trigger (see {@link com.gk_software.gkr.api.txpool.dto.SaleReturnLineItemPromotionTrigger#reference_}).&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;An additional information concerning the promotion trigger (see {@link com.gk_software.gkr.api.txpool.dto.SaleReturnLineItemPromotionTrigger#reference_}).&lt;/p&gt;</value>
        public string reference { get; init; }
        /// <summary>
        /// &lt;p&gt;The promotion value. The meaning of this field depends on the privilege type present in the promotion configuration (promotionOperationConfig) as following:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;PromotionTriggerPrivilegeType equals to &#39;RP&#39;: promotion percentage value.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionTriggerPrivilegeType equals to &#39;PS&#39;: new unit price.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionTriggerPrivilegeType equals to &#39;AM&#39;: rebate total amount.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionTriggerPrivilegeType equals to &#39;RS&#39;: rebate amount for item unit.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;
        /// </summary>
        /// <value>&lt;p&gt;The promotion value. The meaning of this field depends on the privilege type present in the promotion configuration (promotionOperationConfig) as following:&lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;PromotionTriggerPrivilegeType equals to &#39;RP&#39;: promotion percentage value.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionTriggerPrivilegeType equals to &#39;PS&#39;: new unit price.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionTriggerPrivilegeType equals to &#39;AM&#39;: rebate total amount.&lt;/li&gt;&lt;br /&gt; &lt;li&gt;PromotionTriggerPrivilegeType equals to &#39;RS&#39;: rebate amount for item unit.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;</value>
        public double? promotionValue { get; init; }
        /// <summary>
        /// &lt;p&gt;This parameter specifies whether a condition which relates to a trigger will be checked.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter specifies whether a condition which relates to a trigger will be checked.&lt;/p&gt;</value>
        public bool? checkIfRebateWasApplied { get; init; }
        /// <summary>
        /// &lt;p&gt;This parameter defines the maximal line item quantity when a promotion trigger is allowed.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;This parameter defines the maximal line item quantity when a promotion trigger is allowed.&lt;/p&gt;</value>
        public double? maximumQuantity { get; init; }
        /// <summary>
        /// &lt;p&gt;The active customer order id in the client context, if any is available.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;The active customer order id in the client context, if any is available.&lt;/p&gt;</value>
        public string activeCustomerOrderId { get; init; }
        /// <summary>
        /// &lt;p&gt;A unique system assigned identifier for the LineItem of the CustomerOrder. &lt;br /&gt; That means, the sequence number of an active customer order.&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;A unique system assigned identifier for the LineItem of the CustomerOrder. &lt;br /&gt; That means, the sequence number of an active customer order.&lt;/p&gt;</value>
        public int? customerSequenceNumber { get; init; }
        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        public string xXCustom08 { get; init; }
        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        public string xXCustom10 { get; init; }
        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        public string xXCustom09 { get; init; }
        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        public string xXCustom07 { get; init; }
        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        public string xXCustom05 { get; init; }
        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        public string xXCustom06 { get; init; }
        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        public string xXCustom11 { get; init; }
        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        public string xXCustom12 { get; init; }
        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        public string xXCustom13 { get; init; }
        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        public string xXCustom14 { get; init; }
        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        public string xXCustom15 { get; init; }
        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        public string xXCustom03 { get; init; }
        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        public string xXCustom02 { get; init; }
        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        public string xXCustom04 { get; init; }
        /// <summary>
        /// &lt;p&gt;Customizable information&lt;/p&gt;
        /// </summary>
        /// <value>&lt;p&gt;Customizable information&lt;/p&gt;</value>
        public string xXCustom01 { get; init; }
	}
}
