using Bp.Sync.Domain.Entities.BaseEntities;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;

namespace Bp.Sync.Domain.Entities.FcBusinesses
{
    public class RetailStatistic : BaseEntityByLong
    {
        public long ProductRetailId { get; set; }
        public long ProductId { get; set; }
        public long BillId { get; set; }
        /// <summary>
        /// Đơn vị cơ bản
        /// </summary>
        public int BaseUnitId { get; set; }
        /// <summary>
        /// Số lượng bán
        /// </summary>
        public decimal RetailQuantity { get; set; }
        /// <summary>
        /// Đơn vị bán
        /// </summary>
        public int RetailUnitId { get; set; }
        /// <summary>
        /// Giá bán
        /// </summary>
        public decimal RetailPrice { get; set; }
        /// <summary>
        /// Giá bán theo đơn vị cơ bản (nhỏ nhất)
        /// </summary>
        public decimal RetailBaseUnitPrice { get; set; }
        /// <summary>
        /// Giá nhập theo đơn vị cơ bản (nhỏ nhất)
        /// </summary>
        public decimal RetailBaseUnitCost { get; set; }
        /// <summary>
        /// Tổng tiền bán
        /// </summary>
        public decimal RetailTotalPrice { get; set; }
        /// <summary>
        /// Chiếu khấu
        /// </summary>
        public decimal RetailDiscount { get; set; }
        /// <summary>
        /// Thuế (%)
        /// </summary>
        public float RetailTax { get; set; }
        /// <summary>
        /// Lô / Hạn sử dụng
        /// </summary>
        public long ProductShipmentId { get; set; }
        /// <summary>
        /// Vị trí
        /// </summary>
        public long PositionId { get; set; }
        /// <summary>
        /// Mã lưu kho
        /// </summary>
        [MaxLength(256)]
        public string InventoryCode { get; set; }
        /// <summary>
        /// Số lượng trước khi sửa của RetailBaseUnitQuantity
        /// </summary>
        public decimal RetailOriginalQuantity { get; set; }
        /// <summary>
        /// Số lượng bán hàng đã chuyển đổi về đơn vị cơ bản (nhỏ nhất)
        /// </summary>
        public decimal RetailBaseUnitQuantity { get; set; }
        /// <summary>
        /// Id sản phẩm trong kho
        /// </summary>
        public long ProductStorageId { get; set; }
        /// <summary>
        /// Chi nhánh
        /// </summary>
        public long BranchId { get; set; }
        /// <summary>
        /// Id khách hàng
        /// </summary>
        public int? CustomerId { get; set; }
        public StatisticStatus? StatisticStatus { get; set; }

        /// <summary>
        /// Giá nhập trung bình theo đơn vị cơ bản (nhỏ nhất)
        /// </summary>
        public decimal RetailBaseUnitCostPrice { get; set; }
    }
    public enum StatisticStatus
    {
        [Description("Chờ xử lý")]
        Processing = 1,
        [Description("Hoàn thành")]
        Finished = 2,
    }
}
