/* Options:
Date: 2025-06-02 02:05:18
Version: 8.40
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://active-ewebservice.biz/aeservices30/api

//GlobalNamespace: 
//MakePartial: True
//MakeVirtual: True
//MakeInternal: False
//MakeDataContractsExtensible: False
//AddNullableAnnotations: False
//AddReturnMarker: True
//AddDescriptionAsComments: True
//AddDataContractAttributes: False
//AddIndexesToDataMembers: False
//AddGeneratedCodeAttributes: False
//AddResponseStatus: False
//AddImplicitVersion: 
//InitializeCollections: True
//ExportValueTypes: False
IncludeTypes: GetPOSTotalsRequest.*
//ExcludeTypes: 
//AddNamespaces: 
//AddDefaultXmlNamespace: http://schemas.servicestack.net/types
*/

using System;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using AIM.WebService;
using AIM;

namespace AIM
{
    [DataContract]
    public partial class ExceptionInfo
    {
        [DataMember]
        public virtual string Barcode { get; set; }

        [DataMember]
        public virtual string Description { get; set; }

        [DataMember]
        public virtual string Base64Image { get; set; }

        [DataMember]
        public virtual int Category { get; set; }

        [DataMember]
        public virtual int? SubCategory { get; set; }
    }

    public partial interface IScanItem
    {
        long? SkuPk { get; set; }
        long? SasPk { get; set; }
        string Sku { get; set; }
        string Serial { get; set; }
        decimal Quantity { get; set; }
        ExceptionInfo ExceptionInfo { get; set; }
    }

    [DataContract]
    public partial class PosLineItem
        : IScanItem
    {
        [DataMember]
        public virtual long? SkuPk { get; set; }

        [DataMember]
        public virtual long? SasPk { get; set; }

        [DataMember]
        public virtual string Sku { get; set; }

        [DataMember]
        public virtual string Serial { get; set; }

        [DataMember]
        public virtual decimal Quantity { get; set; }

        [DataMember]
        public virtual ExceptionInfo ExceptionInfo { get; set; }

        [DataMember]
        public virtual decimal? Discount { get; set; }

        [DataMember]
        public virtual int? NicsCat { get; set; }

        [DataMember]
        public virtual int? NicsSub { get; set; }

        [DataMember]
        public virtual decimal? PriceOverride { get; set; }

        [DataMember]
        public virtual bool AllowPriceOverrideToIgnoreMinPrice { get; set; }

        [DataMember]
        public virtual string Notes { get; set; }
    }

}

namespace AIM.WebService
{
    [DataContract]
    public partial class BaseRequest
    {
        ///<summary>
        ///This is your AIM API Key provided by Tri-Tech
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="This is your AIM API Key provided by Tri-Tech", IsRequired=true, Name="ApiKey", ParameterType="header")]
        public virtual string ApiKey { get; set; }

        [DataMember]
        [ApiMember(DataType="string", Name="OAuthToken", ParameterType="header")]
        public virtual string OAuthToken { get; set; }
    }

    [DataContract]
    public partial class BaseResponse
    {
        ///<summary>
        ///
        ///</summary>
        [DataMember]
        [ApiMember(DataType="BaseResponseResult", Description="", Name="Status", ParameterType="body")]
        public virtual BaseResponseResult Status { get; set; }
    }

    [DataContract]
    public partial class BaseSecureRequest
        : BaseRequest
    {
        ///<summary>
        ///
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="", Name="Token", ParameterType="Header")]
        public virtual string Token { get; set; }

        ///<summary>
        ///
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="", Name="DeviceId", ParameterType="Header")]
        public virtual string DeviceId { get; set; }

        ///<summary>
        ///
        ///</summary>
        [DataMember]
        [ApiMember(DataType="string", Description="", IsRequired=true, Name="AppId", ParameterType="Header")]
        public virtual string AppId { get; set; }
    }

    ///<summary>
    ///In development, not yet for public use.
    ///</summary>
    [Route("/GetPOSTotals", "POST")]
    [DataContract]
    public partial class GetPOSTotalsRequest
        : BaseSecureRequest, IReturn<GetPOSTotalsResponse>
    {
        public GetPOSTotalsRequest()
        {
            Items = new List<PosLineItem>{};
        }

        [DataMember]
        public virtual int? Acct { get; set; }

        [DataMember]
        public virtual long? LocId { get; set; }

        [DataMember]
        public virtual long? TaxId { get; set; }

        [DataMember]
        public virtual List<PosLineItem> Items { get; set; }

        ///<summary>
        ///MANUAL, BLANKET_PERCENT, BLANKET_AMOUNT, BACK_INTO_TOTAL, or BACK_INTO_TOTAL_WITH_TAX. Defaults to Manual. No line item discounts can be set unless this is MANUAL.
        ///</summary>
        [DataMember]
        [ApiMember(Description="MANUAL, BLANKET_PERCENT, BLANKET_AMOUNT, BACK_INTO_TOTAL, or BACK_INTO_TOTAL_WITH_TAX. Defaults to Manual. No line item discounts can be set unless this is MANUAL.", Name="DiscountMode", ParameterType="query")]
        public virtual string DiscountMode { get; set; }

        [DataMember]
        public virtual decimal? DiscountDetail { get; set; }
    }

    [DataContract]
    public partial class GetPOSTotalsResponse
        : BaseResponse
    {
        public GetPOSTotalsResponse()
        {
            Items = new List<PosResponseItem>{};
        }

        [DataMember]
        public virtual decimal SubTotal { get; set; }

        [DataMember]
        public virtual decimal TaxTotal { get; set; }

        [DataMember]
        public virtual decimal Total { get; set; }

        [DataMember]
        public virtual List<PosResponseItem> Items { get; set; }
    }

    [DataContract]
    public partial class PosResponseItem
        : PosLineItem
    {
        [DataMember]
        public virtual decimal PriceEach { get; set; }

        [DataMember]
        public virtual decimal Price { get; set; }

        [DataMember]
        public virtual bool Discountable { get; set; }

        [DataMember]
        public virtual string ErrorMessage { get; set; }
    }

}