using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;

namespace WCS.Model.ApiModel.Stocktaking
{
    public class MatDetailStocktakingInfoModel : INotifyPropertyChanged
    {
        /// <summary>
        /// 主键 自增Id
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 货架库存明细当前的ID
        /// </summary>
        public int MatDetailCurrentId { get; set; }

        #region 货架属性
        /// <summary>
        /// 货架ID
        /// </summary>
        public int ShlefId { get; set; }

        /// <summary>
        /// 货架编码 对应二维码
        /// </summary>       
        public string ShelfCode { get; set; }

        /// <summary>
        /// 货架类型
        /// </summary>
        public string ShelfType { get; set; }

        /// <summary>
        /// 货架区域
        /// </summary>
        public string ShelfArea { get; set; }

        #endregion

        #region 物料属性
        /// <summary>
        /// 物料编码
        /// </summary>
        public string MatCode { get; set; }
        /// <summary>
        /// 物料名称
        /// </summary>           
        public string MatName { get; set; }

        public string MatBatch { get; set; }

        /// <summary>
        /// 物料规格
        /// </summary>           
        public string? MatSpec { get; set; }

        /// <summary>
        /// 物料数量（原始数量）
        /// </summary>
        public int MatQty { get; set; }

        /// <summary>
        /// 物料数量（盘点数量）
        /// </summary>
        public int StocktakingQty { get; set; }

        /// <summary>
        /// 物料供应商
        /// </summary>           
        public string? MatSupplier { get; set; }

        /// <summary>
        /// 物料客户
        /// </summary>           
        public string? MatCustomer { get; set; }
        #endregion

        /// <summary>
        /// 盘点人
        /// </summary>           
        public string? StocktakingUser { get; set; }

        /// <summary>
        /// 盘点时间
        /// </summary>           
        public DateTime? StocktakingTime { get; set; } = DateTime.Now;

        /// <summary>
        /// 盘点状态
        /// </summary>           
        public StocktakingStatusEnum StocktakingStatus { get; set; } = StocktakingStatusEnum.未提交;

        public bool IsSelected
        {
            get { return isSelected; }
            set
            {
                isSelected = value;
                OnPropertyChanged(nameof(IsSelected));
            }
        }
        public bool isSelected;

        public int RowNumber { get; set; }

        public event PropertyChangedEventHandler PropertyChanged;
        protected virtual void OnPropertyChanged(string propertyName)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
