using Bp.Sync.Domain.Elastics.BaseEntities;
using System;
using System.ComponentModel.DataAnnotations.Schema;

namespace Bp.Sync.Domain.Elastics.Inventories.Configurations
{
    public class ContractDiscountLevelElastic : ElasticBaseEntityWithKey<long>
    {
        /// <summary>
        /// Mức chiết khấu
        /// </summary>
        public int DiscountLevel { get; set; }

        /// <summary>
        /// Sản lượng cam kết nhỏ nhất
        /// </summary>
        [Column(TypeName = "decimal(18, 5)")]
        public decimal SmallestQuantity { get; set; }

        /// <summary>
        /// Sản lượng cam kết lớn nhất
        /// </summary>
        [Column(TypeName = "decimal(18, 5)")]
        public decimal GreatestQuantity { get; set; }

        /// <summary>
        /// Giá chiết khấu theo đơn vị tính nhỏ nhất
        /// </summary>
        [Column(TypeName = "decimal(18, 5)")]
        public decimal DiscountPrice { get; set; }

        /// <summary>
        /// ID của hợp đồng phân phối sản phẩm
        /// </summary>
        public int DistributionContractId { get; set; }

        /// <summary>
        /// Ngày bắt đầu hợp đồng
        /// </summary>
        public DateTimeOffset? DistributionContractStartDate { get; set; }

        /// <summary>
        /// Ngày kết thúc hợp đồng
        /// </summary>
        public DateTimeOffset? DistributionContractEndDate { get; set; }

        /// <summary>
        /// ID của sản phẩm
        /// </summary>
        public long ProductId { get; set; }

        /// <summary>
        /// Đơn giá hợp đồng
        /// </summary>
        [Column(TypeName = "decimal(18, 5)")]
        public decimal ContractPrice { get; set; }

        /// <summary>
        /// ID của nhà cung cấp
        /// </summary>
        public int SupplierId { get; set; }

        public decimal? Tax { get; set; }
    }
}