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

namespace Bp.Sync.Domain.Entities.Inventories.Products
{
    public class ProductInventory : BaseEntityWithKey<long>
    {
        public long ProductId { get; set; }
        /// <summary>
        /// Mã lưu kho - dùng để in barcode
        /// </summary>
        [Column(TypeName = "nvarchar(128)")]
        public string InventoryCode { get; set; }
        /// <summary>
        /// Trạng thái
        /// </summary>
        public Status Status { get; set; }
        /// <summary>
        /// Trạng thái vật lý
        /// </summary>
        public PhysicalStatus PhysicalStatus { get; set; }
        /// <summary>
        /// Số lượng tồn
        /// </summary>
        [Column(TypeName = "decimal(18, 4)")]
        public decimal Quantity { get; set; }
        /// <summary>
        /// Giá nhập
        /// </summary>
        [Column(TypeName = "decimal(18, 4)")]
        public decimal CostPrice { get; set; }
        /// <summary>
        /// Giá bán
        /// </summary>
        [Column(TypeName = "decimal(18, 4)")]
        public decimal Price { get; set; }
        /// <summary>
        /// Giá bán sỉ
        /// </summary>
        [Column(TypeName = "decimal(18, 4)")]
        public decimal WholeSalePrice { get; set; }
        /// <summary>
        /// Số lượng đã sắp xếp vị trí
        /// </summary>
        [Column(TypeName = "decimal(18, 4)")]
        public decimal QuantityArranged { get; set; }
        /// <summary>
        /// Id nhà cung cấp
        /// </summary>
        public int SupplierId { get; set; }
        /// <summary>
        /// Id chi nhánh
        /// </summary>
        public int BranchId { get; set; }
    }
    public enum Status
    {
        [Description("Tạo mới")]
        New = 1,
        [Description("Đã nhận")]
        Received = 2,
        [Description("Đã xuất")]
        Exported = 3
    }
}
