namespace gatewayGK.POSGk
{
    using System.Text.Json.Serialization;

    public class OperationConfiguration
    {
        [JsonPropertyName("forceQuantityInput")]
        public bool forceQuantityInput { get; set; }
        [JsonPropertyName("pricePositionLimit")]
        public int pricePositionLimit { get; set; }
        [JsonPropertyName("pricePositionZeroAllowed")]
        public bool pricePositionZeroAllowed { get; set; }
        [JsonPropertyName("priceTransactionLimit")]
        public int priceTransactionLimit { get; set; }
        [JsonPropertyName("priceDifferencePercentPositionLimit")]
        public int priceDifferencePercentPositionLimit { get; set; }
        [JsonPropertyName("priceDifferenceAbsolutePositionLimit")]
        public int priceDifferenceAbsolutePositionLimit { get; set; }
        [JsonPropertyName("priceDifferenceLimitExceedAction")]
        public string priceDifferenceLimitExceedAction { get; set; }
        [JsonPropertyName("priceNegDifferenceLimitExceedAction")]
        public string priceNegDifferenceLimitExceedAction { get; set; }
        [JsonPropertyName("closeCurrent")]
        public string closeCurrent { get; set; }
        [JsonPropertyName("closePrevious")]
        public string closePrevious { get; set; }
        [JsonPropertyName("filterResult")]
        public bool filterResult { get; set; }
        [JsonPropertyName("allowedWithWeight")]
        public bool allowedWithWeight { get; set; }
        [JsonPropertyName("allowedWithLength")]
        public bool allowedWithLength { get; set; }
        [JsonPropertyName("allowedWithArea")]
        public bool allowedWithArea { get; set; }
        [JsonPropertyName("allowedWithVolume")]
        public bool allowedWithVolume { get; set; }
        [JsonPropertyName("allowedWithMeasure")]
        public bool allowedWithMeasure { get; set; }
        [JsonPropertyName("maximumQuantity")]
        public int maximumQuantity { get; set; }
        [JsonPropertyName("minimumQuantity")]
        public int minimumQuantity { get; set; }
        [JsonPropertyName("quantityInputOrder")]
        public string quantityInputOrder { get; set; }
        [JsonPropertyName("priceInputOrder")]
        public string priceInputOrder { get; set; }
        [JsonPropertyName("quantityLimitExceedAction")]
        public string quantityLimitExceedAction { get; set; }
        [JsonPropertyName("amountLimitExceedAction")]
        public string amountLimitExceedAction { get; set; }
        [JsonPropertyName("weightUnitFactor")]
        public int weightUnitFactor { get; set; }
        [JsonPropertyName("measureUnitFactor")]
        public int measureUnitFactor { get; set; }
        [JsonPropertyName("priceDeviationType")]
        public string priceDeviationType { get; set; }
        [JsonPropertyName("priceNegDeviationType")]
        public string priceNegDeviationType { get; set; }
        [JsonPropertyName("xXCustom08")]
        public string xXCustom08 { get; set; }
        [JsonPropertyName("xXCustom10")]
        public string xXCustom10 { get; set; }
        [JsonPropertyName("xXCustom09")]
        public string xXCustom09 { get; set; }
        [JsonPropertyName("xXCustom07")]
        public string xXCustom07 { get; set; }
        [JsonPropertyName("xXCustom05")]
        public string xXCustom05 { get; set; }
        [JsonPropertyName("xXCustom06")]
        public string xXCustom06 { get; set; }
        [JsonPropertyName("xXCustom11")]
        public string xXCustom11 { get; set; }
        [JsonPropertyName("xXCustom12")]
        public string xXCustom12 { get; set; }
        [JsonPropertyName("xXCustom13")]
        public string xXCustom13 { get; set; }
        [JsonPropertyName("xXCustom14")]
        public string xXCustom14 { get; set; }
        [JsonPropertyName("xXCustom15")]
        public string xXCustom15 { get; set; }
        [JsonPropertyName("xXCustom03")]
        public string xXCustom03 { get; set; }
        [JsonPropertyName("xXCustom02")]
        public string xXCustom02 { get; set; }
        [JsonPropertyName("xXCustom04")]
        public string xXCustom04 { get; set; }
        [JsonPropertyName("xXCustom01")]
        public string xXCustom01 { get; set; }
    }

    public class ItemEntryConfig
    {
        [JsonPropertyName("forceQuantityInput")]
        public bool forceQuantityInput { get; set; }
        [JsonPropertyName("pricePositionLimit")]
        public int pricePositionLimit { get; set; }
        [JsonPropertyName("pricePositionZeroAllowed")]
        public bool pricePositionZeroAllowed { get; set; }
        [JsonPropertyName("priceTransactionLimit")]
        public int priceTransactionLimit { get; set; }
        [JsonPropertyName("priceDifferencePercentPositionLimit")]
        public int priceDifferencePercentPositionLimit { get; set; }
        [JsonPropertyName("priceDifferenceAbsolutePositionLimit")]
        public int priceDifferenceAbsolutePositionLimit { get; set; }
        [JsonPropertyName("priceDifferenceLimitExceedAction")]
        public string priceDifferenceLimitExceedAction { get; set; }
        [JsonPropertyName("priceNegDifferenceLimitExceedAction")]
        public string priceNegDifferenceLimitExceedAction { get; set; }
        [JsonPropertyName("closeCurrent")]
        public string closeCurrent { get; set; }
        [JsonPropertyName("closePrevious")]
        public string closePrevious { get; set; }
        [JsonPropertyName("filterResult")]
        public bool filterResult { get; set; }
        [JsonPropertyName("allowedWithWeight")]
        public bool allowedWithWeight { get; set; }
        [JsonPropertyName("allowedWithLength")]
        public bool allowedWithLength { get; set; }
        [JsonPropertyName("allowedWithArea")]
        public bool allowedWithArea { get; set; }
        [JsonPropertyName("allowedWithVolume")]
        public bool allowedWithVolume { get; set; }
        [JsonPropertyName("allowedWithMeasure")]
        public bool allowedWithMeasure { get; set; }
        [JsonPropertyName("maximumQuantity")]
        public int maximumQuantity { get; set; }
        [JsonPropertyName("minimumQuantity")]
        public int minimumQuantity { get; set; }
        [JsonPropertyName("quantityInputOrder")]
        public string quantityInputOrder { get; set; }
        [JsonPropertyName("priceInputOrder")]
        public string priceInputOrder { get; set; }
        [JsonPropertyName("quantityLimitExceedAction")]
        public string quantityLimitExceedAction { get; set; }
        [JsonPropertyName("weightUnitFactor")]
        public int weightUnitFactor { get; set; }
        [JsonPropertyName("measureUnitFactor")]
        public int measureUnitFactor { get; set; }
        [JsonPropertyName("priceDeviationType")]
        public string priceDeviationType { get; set; }
        [JsonPropertyName("priceNegDeviationType")]
        public string priceNegDeviationType { get; set; }
        [JsonPropertyName("xXCustom01")]
        public string xXCustom01 { get; set; }
        [JsonPropertyName("xXCustom02")]
        public string xXCustom02 { get; set; }
        [JsonPropertyName("xXCustom03")]
        public string xXCustom03 { get; set; }
        [JsonPropertyName("xXCustom04")]
        public string xXCustom04 { get; set; }
        [JsonPropertyName("xXCustom05")]
        public string xXCustom05 { get; set; }
        [JsonPropertyName("xXCustom06")]
        public string xXCustom06 { get; set; }
        [JsonPropertyName("xXCustom07")]
        public string xXCustom07 { get; set; }
        [JsonPropertyName("xXCustom08")]
        public string xXCustom08 { get; set; }
        [JsonPropertyName("xXCustom09")]
        public string xXCustom09 { get; set; }
        [JsonPropertyName("xXCustom10")]
        public string xXCustom10 { get; set; }
        [JsonPropertyName("xXCustom11")]
        public string xXCustom11 { get; set; }
        [JsonPropertyName("xXCustom12")]
        public string xXCustom12 { get; set; }
        [JsonPropertyName("xXCustom13")]
        public string xXCustom13 { get; set; }
        [JsonPropertyName("xXCustom14")]
        public string xXCustom14 { get; set; }
        [JsonPropertyName("xXCustom15")]
        public string xXCustom15 { get; set; }
    }

    public class AddItemRequ
    {
        [JsonPropertyName("operationConfiguration")]
        public OperationConfiguration operationConfiguration { get; set; }
        [JsonPropertyName("barcode")]
        public string barcode { get; set; }
        [JsonPropertyName("salesRestrictionsCheckNeeded")]
        public bool salesRestrictionsCheckNeeded { get; set; }
        [JsonPropertyName("priceVariant")]
        public string priceVariant { get; set; }
        [JsonPropertyName("itemEntryConfig")]
        public ItemEntryConfig itemEntryConfig { get; set; }
        [JsonPropertyName("entryMethodCode")]
        public string entryMethodCode { get; set; }
        [JsonPropertyName("keyedOnline")]
        public bool keyedOnline { get; set; }
    }

}
