using Bp.Sync.Domain.Elastics.BaseEntities;
using Bp.Sync.Domain.Entities.Inventories.Orders;
using System;

namespace Bp.Sync.Domain.Elastics.Inventories.Orders
{
    public class OrderElastic : ElasticBaseEntityWithKey<long>
    {
        /// <summary>
        /// Mã đặt đơn
        /// </summary>
        public string Code { get; set; }
        /// <summary>
        /// Mã khách hàng
        /// </summary>
        public int CustomerId { get; set; }
        /// <summary>
        /// Mã chi nhánh hiện tại
        /// </summary>
        public int BranchId { get; set; }
        /// <summary>
        /// Mã chi nhánh đích (chi nhánh được đặt đơn hàng)
        /// VD: chi nhánh A đặt hàng của chi nhánh B. DestBranchId là ID của chi nhánh B
        /// </summary>
        public int DestBranchId { get; set; }
        /// <summary>
        /// Trạng thái đặt đơn
        /// </summary>
        public OrderStatus OrderStatus { get; set; }
        /// <summary>
        /// Mô tả / lý do / diễn giải
        /// </summary>
        public string Description { get; set; }
        /// <summary>
        /// Loại đơn hàng
        /// </summary>
        public OrderType OrderType { get; set; }
        /// <summary>
        /// Có in hóa đơn hay không?
        /// </summary>
        public bool IsPrintVatInvoice { get; set; }
        /// <summary>
        /// Ngày đặt hàng
        /// </summary>
        public DateTimeOffset? OrderDate { get; set; }
        /// <summary>
        /// Ngày duyệt đơn hàng
        /// </summary>
        public DateTimeOffset? ApprovedDate { get; set; }
        /// <summary>
        /// ID của người duyệt đơn hàng
        /// </summary>
        public int? ApprovedById { get; set; }
        /// <summary>
        /// Tên đăng nhập của người duyệt đơn hàng
        /// </summary>
        public string ApprovedByUserName { get; set; }
        /// <summary>
        /// Ngày xuất lần đầu tiên
        /// </summary>
        public DateTimeOffset? FirstExportedDate { get; set; }
        /// Mã đơn gộp 
        /// </summary>
        public string CombineCode { get; set; }
        /// <summary>
        /// Thời gian SLA
        /// </summary>
        public DateTimeOffset? SlaTime { get; set; }
        public Entities.Inventories.CollectMoneyStatus BillCollectMoneyStatus { get; set; }
        public DateTimeOffset? BillCompletedTime { get; set; }
    }


}
