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

namespace Bp.Sync.Domain.Entities.Inventories.Accounts
{
    public class Account : BaseEntityWithKey<int>
    {
        /// <summary>
        /// Số tài khoản
        /// </summary>
        [Column(TypeName = "nvarchar(64)")]
        public string Code { get; set; }
        /// <summary>
        /// Tên tài khoản
        /// </summary>
        [Column(TypeName = "nvarchar(1024)")]
        public string Name { get; set; }
        /// <summary>
        /// Tên tài khoản tiếng Anh
        /// </summary>
        [Column(TypeName = "nvarchar(1024)")]
        public string EnglishName { get; set; }
        /// <summary>
        /// Tính chất 
        /// </summary>
        public AccountType AccountType { get; set; }
        /// <summary>
        /// Diễn giải / Mô tả
        /// </summary>
        [Column(TypeName = "nvarchar(1024)")]
        public string Description { get; set; }
        /// <summary>
        /// ID cha
        /// </summary>
        public int ParentId { get; set; }
        /// <summary>
        /// Số dư nợ
        /// </summary>
        [Column(TypeName = "decimal(18, 5)")]
        public decimal DebitBalance { get; set; }
        /// <summary>
        /// Số dư có
        /// </summary>
        [Column(TypeName = "decimal(18, 5)")]
        public decimal CreditBalance { get; set; }
    }

    public enum AccountType
    {
        [Description("Dư nợ")]
        DebtBalance = 1,
        [Description("Dư có")]
        CreditBalance = 2,
        [Description("Lưỡng tính")]
        Hermaphrodite = 3,
        [Description("Không có số dư")]
        NoBalance = 4
    }
}
