예제 #1
0
        public void ReloadPurchasingLimits(int orderMonth)
        {
            DistributorPurchasingLimitsSourceType source = GetDistributorPurchasingLimitsSource(_currentLoggedInCountry, _distributorId);

            if (source == DistributorPurchasingLimitsSourceType.HMS)
            {
                var HMSLimits = LoadPurchasingLimitsFromDB(DistributorPurchasingLimitsSourceType.HMS);
                if (HMSLimits.Any())
                {
                    _applicableLimits = HMSLimits;
                    WritePurchasingLimitsToDB(HMSLimits);
                    SaveToCache();
                }
            }
        }
예제 #2
0
        /// <summary>
        /// check InternetOrdering DB first, if DS's limits not met, check HMS -- to reduce calls
        /// </summary>
        private void LoadLimits()
        {
            try
            {
                bool bCheckFusion = checkSQLPurchasingLimits(_processingCountry, _distributorLevel);
                if (bCheckFusion)
                {
                    this._applicableLimits = null;

                    DistributorPurchasingLimitsSourceType source = GetDistributorPurchasingLimitsSource(_currentLoggedInCountry, _distributorId);
                    if (source == DistributorPurchasingLimitsSourceType.HMS)
                    {
                        this._applicableLimits = LoadPurchasingLimitsFromDB(DistributorPurchasingLimitsSourceType.HMS);
                    }
                    if (this._applicableLimits == null)
                    {
                        this._applicableLimits = LoadPurchasingLimitsFromDB(source = DistributorPurchasingLimitsSourceType.InternetOrdering);
                    }

                    if (this._applicableLimits != null)
                    {
                        foreach (var al in _applicableLimits)
                        {
                            if ((al as PurchasingLimits_V01).RemainingVolume < -1)
                            {
                                (al as PurchasingLimits_V01).RemainingVolume = 0;
                            }
                        }
                    }

                    // if no SQL data to start with?
                    if (source == DistributorPurchasingLimitsSourceType.InternetOrdering)
                    {
                        if (_applicableLimits == null || _applicableLimits.Count() == 0 || (HLConfigManager.Configurations.DOConfiguration.GetPurchaseLimitsFromFusion && _applicableLimits.Where(l => (l as PurchasingLimits_V01).LimitsRestrictionType == LimitsRestrictionType.PurchasingLimits).Count() == 1))
                        {
                            this._applicableLimits = LoadPurchasingLimitsFromDB(DistributorPurchasingLimitsSourceType.HMS);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                HL.Common.Logging.LoggerHelper.Error(
                    string.Format(
                        "Error LoadLimits in PurchaseRestrictionManager for: DS:{0} - Country:{1}, {2}", _distributorId, _currentLoggedInCountry, ex));
            }
        }
예제 #3
0
        /// <summary>
        /// load limits from Internet or HMS, return two months limits
        /// </summary>
        /// <param name="source"></param>
        /// <returns></returns>
        private List <PurchasingLimits> LoadPurchasingLimitsFromDB(DistributorPurchasingLimitsSourceType source)
        {
            List <PurchasingLimits> limits = new List <PurchasingLimits>();

            using (var proxy = ServiceClientProvider.GetOrderServiceProxy())
            {
                try
                {
                    var currentLocalTime = HL.Common.Utilities.DateUtils.GetCurrentLocalTime(_currentLoggedInCountry);

                    var request = new GetDistributorPurchasingLimitsRequest_V02
                    {
                        DistributorID = _distributorId,
                        CountryCode   = _currentLoggedInCountry,
                        Year          = currentLocalTime.Year,
                        Month         = currentLocalTime.Month,
                        Source        = source,
                        LimitPeriod   = HLConfigManager.Configurations.DOConfiguration.PurchasingLimitRestrictionPeriod, // this is applicable only to purchasing limits
                    };

                    var response =
                        proxy.GetDistributorPurchasingLimits(new GetDistributorPurchasingLimitsRequest(request)).GetDistributorPurchasingLimitsResult as GetDistributorPurchasingLimitsResponse_V02;
                    if (response != null && response.Status == MyHerbalife3.Ordering.ServiceProvider.OrderSvc.ServiceResponseStatusType.Success)
                    {
                        limits = response.PurchasingLimits;
                    }
                }
                catch (Exception ex)
                {
                    HL.Common.Logging.LoggerHelper.Exception("System.Exception", new Exception(
                                                                 string.Format(
                                                                     "Error LoadPurchasingLimitsFromDB from Order service for: DS:{0} - Country:{1}, {2}",
                                                                     _distributorId, _currentLoggedInCountry, ex)));
                }
            }
            return(limits);
        }