public static void DeleteLogLoyaltyPoint(int?CustomerId, decimal?totalAmount, int?ProductInvoiceId)
        {
            Erp.Domain.Sale.Repositories.LogLoyaltyPointRepository logLoyaltyPointRepository = new Erp.Domain.Sale.Repositories.LogLoyaltyPointRepository(new Domain.Sale.ErpSaleDbContext());
            Erp.Domain.Account.Repositories.CustomerRepository     customerRepository        = new Erp.Domain.Account.Repositories.CustomerRepository(new Domain.Account.ErpAccountDbContext());
            Erp.Domain.Sale.Repositories.LoyaltyPointRepository    loyaltyPointRepository    = new Erp.Domain.Sale.Repositories.LoyaltyPointRepository(new Domain.Sale.ErpSaleDbContext());
            var setting_point = loyaltyPointRepository.GetAllLoyaltyPoint().Where(x => x.MinMoney <= totalAmount && totalAmount <= x.MaxMoney).ToList();

            //kiểm tra thông tin khách hàng có tồn tại hay không và cập nhật điểm vào khách hàng
            var customer = customerRepository.GetCustomerById(CustomerId.Value);

            if (customer != null)
            {
                int so_diem_cu_cua_hoa_don = 0;
                var LoyaltyPoint           = logLoyaltyPointRepository.GetAllLogLoyaltyPoint().Where(x => x.CustomerId == CustomerId && x.ProductInvoiceId == ProductInvoiceId).ToList();
                if (LoyaltyPoint.Count() > 0)
                {
                    so_diem_cu_cua_hoa_don = LoyaltyPoint.FirstOrDefault().PlusPoint.Value;
                    //cập nhật lại điểm vào khách hàng khi bỏ ghi sổ hóa đơn
                    customer.Point = customer.Point - so_diem_cu_cua_hoa_don;
                    customerRepository.UpdateCustomer(customer);
                    //xóa lịch sử tích lũy điểm
                    logLoyaltyPointRepository.DeleteLogLoyaltyPoint(LoyaltyPoint.FirstOrDefault().Id);
                }
            }
        }
        public static void CreateLogLoyaltyPoint(int?CustomerId, decimal?totalAmount, int?ProductInvoiceId)
        {
            Erp.Domain.Sale.Repositories.LogLoyaltyPointRepository logLoyaltyPointRepository = new Erp.Domain.Sale.Repositories.LogLoyaltyPointRepository(new Domain.Sale.ErpSaleDbContext());
            Erp.Domain.Account.Repositories.CustomerRepository     customerRepository        = new Erp.Domain.Account.Repositories.CustomerRepository(new Domain.Account.ErpAccountDbContext());
            Erp.Domain.Sale.Repositories.LoyaltyPointRepository    loyaltyPointRepository    = new Erp.Domain.Sale.Repositories.LoyaltyPointRepository(new Domain.Sale.ErpSaleDbContext());

            int?point = 0;

            var min = loyaltyPointRepository.GetAllLoyaltyPoint().OrderBy(x => x.MinMoney).FirstOrDefault();

            if (totalAmount < min.MinMoney)
            {
                point = min.PlusPoint;
            }
            else
            {
                var max = loyaltyPointRepository.GetAllLoyaltyPoint().OrderByDescending(x => x.MinMoney).FirstOrDefault();
                if (totalAmount > max.MaxMoney)
                {
                    point = max.PlusPoint;
                }
                else
                {
                    var setting_point = loyaltyPointRepository.GetAllLoyaltyPoint().Where(x => x.MinMoney <= totalAmount && totalAmount <= x.MaxMoney).FirstOrDefault();
                    point = setting_point != null ? setting_point.PlusPoint : 0;
                }
            }

            //kiểm tra thông tin khách hàng có tồn tại hay không và cập nhật điểm vào khách hàng
            var customer = customerRepository.GetCustomerById(CustomerId.Value);

            if (customer != null)
            {
                var logLoyaltyPoint = new LogLoyaltyPoint();
                logLoyaltyPoint.IsDeleted      = false;
                logLoyaltyPoint.CreatedUserId  = WebSecurity.CurrentUserId;
                logLoyaltyPoint.ModifiedUserId = WebSecurity.CurrentUserId;
                logLoyaltyPoint.AssignedUserId = WebSecurity.CurrentUserId;
                logLoyaltyPoint.CreatedDate    = DateTime.Now;
                logLoyaltyPoint.ModifiedDate   = DateTime.Now;

                logLoyaltyPoint.PlusPoint        = point;
                logLoyaltyPoint.ProductInvoiceId = ProductInvoiceId;
                if (customer.Point != null)
                {
                    logLoyaltyPoint.TotalPoint = customer.Point + logLoyaltyPoint.PlusPoint;
                }
                else
                {
                    logLoyaltyPoint.TotalPoint = logLoyaltyPoint.PlusPoint;
                }
                logLoyaltyPointRepository.InsertLogLoyaltyPoint(logLoyaltyPoint);
                //cập nhật điểm vào khách hàng
                customer.Point = logLoyaltyPoint.TotalPoint;
                customerRepository.UpdateCustomer(customer);
            }
        }