using System;
using System.ComponentModel;

namespace OnlineSalesAutoCrop.CoreAPI.Models
{
	public enum EnumBonusType : short
	{
		[Description("Discount")]
		Discount = 1,

		[Description("Product")]
		Product = 2,

		[Description("Gift Item")]
		GiftItem = 3,

		[Description("Discount On Value")]
		DiscountOnValue = 4
	}

	public enum EnumSPCalcMethod : short
	{
		[Description("One Slab Only")]
		OneSlabOnly = 1,

		[Description("Remaining")]
		Remaining = 2
	}

	public enum EnumOfferBasis : short
	{
		[Description("Invoice Value")]
		InvoiceValue = 1,

		[Description("Product Combination")]
		ProductCombination = 2,

		[Description("ProductBundle")]
		ProductBundle = 3,
	}

	public enum EnumSalesUnit : short
	{
		[Description("Piece")]
		Pcs = 1,

		[Description("Value")]
		Value = 2,

		[Description("Weight")]
		Weight = 3,

		[Description("Carton")]
		Ctn = 4,

		[Description("Volume")]
		Volume = 5,

		[Description("Line Count")]
		LineCount = 6
	}

	public enum EnumBmProcessType : short
	{
		[Description("Batch Disabled")]
		None = 0,

		[Description("Manually Selected")]
		Manual = 1,

		[Description("FIFO Method (First in First out")]
		FIFO = 2,

		[Description("LIFO Method (Last in First out")]
		LIFO = 3
	}

	public enum EnumSalesPromotionType : short
	{
		[Description("Invoice value")]
		InvoiceValue = 1,

		[Description("SKU purchase")]
		SkuPurchase = 2
	}

	public enum EnumAbsentType : short
	{
		[Description("Leave")]
		LeaveEntry = 1,

		[Description("Late")]
		Late = 2,

		[Description("Client Visit")]
		ClientVisit = 3,

		[Description("Home Office")]
		HomeOffice = 4
	}

	public enum EnumFaMovementType : short
	{
		[Description("Fixed Asset Installation")]
		Installation = 1,

		[Description("Fixed Asset Transfer")]
		Transfer = 2
	}

	public enum EnumDepreciationCalcMode : short
	{
		[Description("Yearly")]
		Yearly = 0,

		[Description("Monthly")]
		Monthly = 1
	}

	public enum EnumFaTranType : short
	{
		[Description("Fixed Asset Write Off")]
		WriteOff = 1,

		[Description("Fixed Asset Sales")]
		Sales = 2,

		[Description("Add Value to Fixed Asset")]
		AddValue = 3,

		[Description("Reduce Value from Fixed Asset")]
		ReduceValue = 4
	}

	public enum EnumStockType : short
	{
		[Description("Sound Stock")]
		Sound = 1,

		[Description("Damage Stock")]
		Damage = 2,

		[Description("Expired Stock")]
		Expired = 3,

		[Description("Booked Stock")]
		Booked = 4
	}

	public enum EnumItemType : short
	{
		[Description("Services")]
		Service = 1,

		[Description("Consumables")]
		Consumables = 2,

		[Description("Goods")]
		Goods = 3,

		[Description("Fixed Assets")]
		FixedAssets = 4
	}

	public enum EnumGLSpecialHead : short
	{
		//Controls
		Assets = 1,
		Liabilities = 2,
		Income = 3,
		Expenditure = 4,

		//Groups
		CashAccountGroup = 5,
		BankAccountGroup = 6,
		PurchaseAccount = 7,
		ProfitBroughtForwardGroup = 8,
		LossBroughtForwardGroup = 9,

		//Sub groups
		ProfitBroughtForwardSubGroup = 10,
		LossBroughtForwardSubGroup = 11,

		//Posting
		ProfitBroughtForward = 12,
		LossBroughtForward = 13,
	}

	public enum EnumAitVatRateOf : short
	{
		[Description("Product Type")]
		ProductType = 1,

		[Description("Fixed Asset Category")]
		FixedAssetCategory = 2
	}

	public enum EnumSkuPriceType : short
	{
		[Description("Cost/Purchase Price")]
		CostPrice = 1,

		[Description("Selling Price")]
		SellingPrice = 2,

		[Description("Maximum Retail Price (MRP)")]
		MRP = 3
	}

	public enum EnumSkuParamType : short
	{
		[Description("VAT")]
		Vat = 1,

		[Description("SD")]
		Sd = 2,

		[Description("Commission")]
		Commission = 3
	}

	public enum EnumWOStatus : short
	{
		[Description("Draft")]
		Draft = 1,

		[Description("Authorized")]
		Authorized = 2,

		[Description("Partial Received")]
		Partial = 3,

		[Description("Full Received")]
		Full = 4,

		[Description("Frozen")]
		Frozen = 5
	}

	public enum EnumDepreciationType : short
	{
		[Description("None")]
		None = 0,

		[Description("Straight Line")]
		StraightLine = 1,

		[Description("Recursive")]
		Recursive = 2
	}

	public enum EnumClientType : short
	{
		[Description("Client")]
		Client = 1,

		[Description("Supplier")]
		Supplier = 2,

		[Description("Client & Supplier")]
		Both = 3
	}

	public enum EnumGLReportLevel : short
	{
		[Description("Top")]
		Top = 1,

		[Description("Group")]
		Group = 2,

		[Description("Sub Group")]
		SubGroup = 3,

		[Description("Sub Total")]
		SubTotal = 4
	}

	public enum EnumLookupType : short
	{
		[Description("Order Type")]
		OrderType = 1,

		[Description("Job Type")]
		JobType = 2,

		[Description("Voucher Type")]
		VoucherType = 3,

		[Description("Inventory Type")]
		InventoryType = 4,

		[Description("Goods Type")]
		GoodsType = 5,

		[Description("Unit of Measure")]
		UoM = 6,

		[Description("Anomaly Reason")]
		AnomalyReason = 7,

		[Description("Designation")]
		Designation = 8,

		[Description("Stock Take Reason")]
		StockTakeReason = 9,

		[Description("Department")]
		Department = 10,

		[Description("Leave Type")]
		LeaveType = 11,

		[Description("Asset Type")]
		AssetType = 12,

		[Description("Login Remarks")]
		LoginRemarks = 13,

		[Description("Logout Remarks")]
		LogoutRemarks = 14,

		[Description("Security Categories")]
		SecurityCategories = 15,

		[Description("SalesPoint Type")]
		SalesPointType = 16,

		[Description("Blood Group")]
		BloodGroup = 17,

		[Description("Unit Type")]
		UnitType = 18,

		[Description("Product Hierarchy Level")]
		ProductHierarchyLevel = 19,

		[Description("Channel Hierarchy Level")]
		ChannelHierarchyLevel = 20,

		[Description("Market Hierarchy Level")]
		MarketHierarchyLevel = 21,

		[Description("Customer Grade")]
		CustomerGrade = 22,

		[Description("Price Type")]
		PriceType = 23,

		[Description("Product VAT SD Commission")]
		ProductVatSdCommission = 24,

		[Description("External Product Level")]
		ExternalProductLevel = 25,

		[Description("Ideal Working Hours")]
		IdealWorkingHours = 26,

		[Description("Ramadan Working Hours")]
		RamadanWorkingHours = 27,
	}

	public enum EnumInstrumentType : short
	{
		[Description("Cheque")]
		Cheque = 1,

		[Description("EFT")]
		EFT = 2,

		[Description("Cash Deposit")]
		CashDeposit = 3
	}

	public enum EnumSalesInstrumentType : short
	{
		[Description("None")]
		None = 0,

		[Description("Cash")]
		CashDeposit = 1,

		[Description("EFT")]
		EFT = 2,

		[Description("Cheque")]
		Cheque = 3,

		[Description("PO/DD")]
		POorDD = 4,

		[Description("MFS")]
		MFS = 5,

		[Description("Online Transfer")]
		OnlineTransfer = 6,

		[Description("Card/Debit Card")]
		CreditOrDebitCard = 7
	}

	public enum EnumPurchaseType : short
	{
		[Description("Cash Purchase")]
		Cash = 1,

		[Description("Purchase to Pay")]
		P2P = 2,

		[Description("Fixed Asset")]
		FixedAssets = 3
	}

	public enum EnumInvoiceStatus : short
	{
		[Description("New Invoice")]
		New = 1,

		[Description("Partial Payment Received")]
		Partial = 2,

		[Description("Full Payment Received")]
		Full = 3,

		[Description("Frozen")]
		Frozen = 4
	}

	public enum EnumInvoiceP2PStatus : short
	{
		[Description("New Invoice")]
		New = 1,

		[Description("Invoice Authorized")]
		Authorised = 2,

		[Description("Partial Payment Received")]
		Partial = 3,

		[Description("Full Payment Received")]
		Full = 4,

		[Description("Frozen")]
		Frozen = 5
	}

	public enum EnumPOStatus : short
	{
		[Description("New Purchase Order")]
		New = 1,

		[Description("Partial Bill Submitted")]
		Partial = 2,

		[Description("Full Bill Submitted")]
		Full = 3,

		[Description("Frozen")]
		Frozen = 4
	}

	public enum EnumOrderType : short
	{
		[Description("PO")]
		PO = 1,

		[Description("WO")]
		WO = 2,

		[Description("Contract")]
		Contract = 3,

		[Description("E-mail")]
		EMail = 4,

		[Description("Verbal")]
		Verbal = 5
	}

	public enum EnumJobType : short
	{
		[Description("New Development")]
		NewDevelopment = 1,

		[Description("CR")]
		CR = 2,

		[Description("AMC/MMC")]
		AMC_MMC = 3,

		[Description("Product Sales")]
		Product_Sales = 4,

		[Description("SAAS")]
		SAAS = 5,

		[Description("Server Rental")]
		Server_Rental = 6,

		[Description("PAAS Support")]
		PAAS_Support = 7,

		[Description("Rollout")]
		Rollout = 8,

		[Description("Training")]
		Training = 9,

		[Description("BPO")]
		BPO = 10,

		[Description("Commission")]
		Commission = 11,

		[Description("Consultation")]
		Consultation = 12,

		[Description("Other")]
		Other = 13
	}

	public enum EnumLoginStatus : short
	{
		[Description("Success")]
		Success = 0,

		[Description("Error")]
		Error = 1,

		[Description("Unsuccessful")]
		Unsuccessful = 2,

		[Description("Version Mismatch")]
		VersionMismatch = 3
	}

	public enum EnumEmployeeType : short
	{
		[Description("Employee")]
		Employee = 1,

		[Description("Project Leader")]
		ProjectLeader = 2,

		[Description("Project Manager")]
		ProjectManager = 4,

		[Description("Developer")]
		Developer = 8,

		[Description("Support Manager")]
		Support = 16,

		[Description("QA Manager")]
		QA = 32
	}

	public enum EnumGlCodeType : short
	{
		[Description("Bank Account")]
		BankAccount = 1,

		[Description("Income Account")]
		Income = 2,

		[Description("VAT Account")]
		Vat = 3,

		[Description("AIT Account")]
		Ait = 4,

		[Description("Purchase VAT Account")]
		PurchaseVat = 5,

		[Description("VAT Payable Account")]
		VatPayable = 6,

		[Description("AIT Payable Account")]
		AitPayable = 7,

		[Description("Cash in Hand Account")]
		CashInHand = 8,

		[Description("Damage Goods Expense Account")]
		DamageExpense = 9,

		[Description("Fixed Asset Sales Account")]
		FixedAssetSales = 10,

		[Description("Accumulated Depreciation Account")]
		AccumulatedDepreciation = 11
	}

	public enum EnumGlAccountType : short
	{
		[Description("Not Applicable")]
		None = 0,

		[Description("Income Account")]
		Income = 1,

		[Description("Liability Account")]
		Liability = 2
	}

	public enum EnumAuthenticationMethod : short
	{
		[Description("Not Applicable")]
		None = 0,

		[Description("Via Email")]
		Email = 1,

		[Description("Via Mobile SMS")]
		MobileSMS = 2,

		[Description("Third Party Authenticator")]
		ThirdPartyAuthenticator = 3
	}

	[Flags]
	public enum EnumStatus : short
	{
		[Description("Initiated")]
		Initiated = 1,

		[Description("Rejected")]
		Rejected = 2,

		[Description("Authenticated")]
		Authenticated = 4,

		[Description("Authorized")]
		Authorized = 8,

		[Description("Inactive")]
		Inactive = 16
	}

	public enum EnumAccessStatus : short
	{
		[Description("First Time")]
		FirstTime = 1,

		[Description("Logged In")]
		LoggedIn = 2,

		[Description("Logged Out")]
		LoggedOut = 3
	}

	public enum EnumCOALevelId : short
	{
		[Description("Control")]
		Control = 1,

		[Description("Group")]
		Group = 2,

		[Description("Subgroup")]
		Subgroup = 3,

		[Description("Posting")]
		Posting = 4
	}

	public enum EnumCacheType
	{
		[Description("None")]
		None = 0,

		[Description("In Memory")]
		InMemory = 1,


		[Description("Sql Server")]
		SqlServer = 2,

		[Description("Redis")]
		Redis = 3,
	}

	public enum EnumSalesType : short
	{
		[Description("Direct Sales")]
		DirectSales = 1,

		[Description("Order Sales")]
		OrderSales = 2
	}

	public enum EnumInvoiceSource : short
	{
		[Description("From Application")]
		FromApplication = 1,

		[Description("From Mobile")]
		FromMobile = 2,

		[Description("From Others")]
		FromOthers = 3,
	}

    public enum IntegrationMaterialCalCulationType : short
	{
        [Description("Percentage")]
        A = 1,
        [Description("Fixed value ")]
        B = 2,
    }

	public enum IntegrationMaterialPriceType: short
	{
		[Description("Base Price")]
        PR00 = 1 ,
        [Description("Amount Based Discount")]
        ZDS1 = 2 ,
        [Description("Percentage Based Discount")]
        ZDS2 = 3
    }

	public enum UserPlatFormType : short
	{
		SAP=1,
        AppUser  =2,
    }

	public enum UserRoleTypeEnum : short
    {
		[Description("Order Collector")]
		OrderCollector = 1,
		[Description("OrderValidator")]
		OrderValidator = 2,
		[Description("OrderApprover")]
		OrderApprover = 3 ,
        [Description("SAP User")]
        SapUser = 4 ,
    }

	public enum OrderStatusEnum : short
    {
        [Description("Draft")]
        Draft = 1,
        [Description("Order Sent to Validator")]
        InOrderValidation = 2,
        [Description("Cancelled by Validator")]
        CancelledByValidator = 3,
        [Description("Order Sent to Approver")]
        InOrderApproval = 4,
        [Description("Cancelled by Approver")]
        CancelledByApprover = 5,
        [Description("Approved")]
        Approved = 6,
        [Description("Sent To SAP")]
        SentToSAP = 7
    }

    public enum SAPOrderStatusEnum : short
    {
        Pending = 0,
        Sent = 1,
        Error = 2
    }
}