namespace Ladaer.BackEnd.Infrastructures.DTO.Items.Finance
{
    /// <summary>
    /// Item hiển thị thông tin hóa đơn VAT trong danh sách
    /// </summary>
    public class VatInvoiceItem
    {
        public int Id { get; set; }

        /// <summary>
        /// Ký hiệu mẫu số (khmshdon)
        /// </summary>
        public int TemplateCode { get; set; }

        /// <summary>
        /// Ký hiệu hóa đơn (khhdon)
        /// </summary>
        public string InvoiceSymbol { get; set; }

        /// <summary>
        /// Số hóa đơn (shdon)
        /// </summary>
        public string InvoiceNumber { get; set; }

        /// <summary>
        /// Ngày lập (tdlap)
        /// </summary>
        public DateTimeOffset IssueDate { get; set; }

        /// <summary>
        /// MST người bán (nmmst)
        /// </summary>
        public string SellerTaxCode { get; set; }

        /// <summary>
        /// Tên người bán (nmten)
        /// </summary>
        public string SellerName { get; set; }

        /// <summary>
        /// MST người mua (nbmst)
        /// </summary>
        public string BuyerTaxCode { get; set; }

        /// <summary>
        /// Tên người mua (nbten)
        /// </summary>
        public string BuyerName { get; set; }

        /// <summary>
        /// Tổng tiền hàng (tgtcthue)
        /// </summary>
        public decimal AmountBeforeTax { get; set; }

        /// <summary>
        /// Tổng tiền thuế (tgtthue)
        /// </summary>
        public decimal TaxAmount { get; set; }

        /// <summary>
        /// Tổng thanh toán (tgtttbso)
        /// </summary>
        public decimal TotalAmount { get; set; }

        /// <summary>
        /// Đơn vị tiền (dvtte)
        /// </summary>
        public string Currency { get; set; }

        /// <summary>
        /// Tình trạng (tthai)
        /// </summary>
        public int Status { get; set; }

        /// <summary>
        /// Ghi chú (gchu)
        /// </summary>
        public string Note { get; set; }

        /// <summary>
        /// Thời gian đồng bộ
        /// </summary>
        public DateTimeOffset SyncTime { get; set; }

        /// <summary>
        /// Chiều hóa đơn: 1 = Bán ra, 2 = Mua vào
        /// </summary>
        public int InvoiceDirection { get; set; }

        /// <summary>
        /// Tên chiều hóa đơn
        /// </summary>
        public string InvoiceDirectionName => InvoiceDirection == 2 ? "Mua vào" : "Bán ra";

        /// <summary>
        /// Kết quả kiểm tra hóa đơn (ttxly)
        /// </summary>
        public int InvoiceCheckResult { get; set; }

        /// <summary>
        /// Tên kết quả kiểm tra (ttxly)
        /// </summary>
        public string InvoiceCheckResultName => InvoiceCheckResult switch
        {
            0 => "Cục Thuế đã nhận",
            1 => "Đang tiến hành kiểm tra điều kiện cấp mã",
            2 => "CQT từ chối hóa đơn theo từng lần phát sinh",
            3 => "Hóa đơn đủ điều kiện cấp mã",
            4 => "Hóa đơn không đủ điều kiện cấp mã",
            5 => "Đã cấp mã hóa đơn",
            6 => "Cục Thuế đã nhận không mã",
            7 => "Đã kiểm tra định kỳ HĐĐT không có mã",
            8 => "Cục Thuế đã nhận HĐ có mã từ MTT",
            _ => ""
        };

        /// <summary>
        /// Tên trạng thái hóa đơn (tthai)
        /// </summary>
        public string StatusName => Status switch
        {
            1 => "Hóa đơn mới",
            2 => "Hóa đơn thay thế",
            3 => "Hóa đơn điều chỉnh",
            4 => "Hóa đơn đã bị thay thế",
            5 => "Hóa đơn đã bị điều chỉnh",
            6 => "Hóa đơn đã bị hủy",
            _ => ""
        };
    }
}
