Example #1
0
 public ValidShipment(DateTime vintDate, PackageSizes packageSize, CarrierCodes carrierCode)
 {
     VintDate = vintDate;
     MonthlyDiscountService.UpdateDiscountsOnNewMonth(VintDate);
     PackageSize = packageSize;
     CarrierCode = carrierCode;
     SetPricingRule(PackageSize, CarrierCode);
 }
Example #2
0
        public override void GeneratePricing(PackageSizes size, CarrierCodes carrierCode)
        {
            var regularPrice = GetProviderPrice(size, carrierCode);
            var lowerstPrice = GetLowestPrice(regularPrice);
            var discount     = GetPriceDifference(regularPrice, lowerstPrice);

            if (DiscountData.DiscountAmount >= discount)
            {
                SetPricingValuesWithMaxDiscount(lowerstPrice, discount);
            }
            else
            {
                SetPricingValuesWithAvilableDiscount(regularPrice, discount);
            }
        }
Example #3
0
        public void SetPricingRule(PackageSizes size, CarrierCodes code)
        {
            switch (code)
            {
            case CarrierCodes.LP:
                switch (size)
                {
                case PackageSizes.S:
                    Rule = new RegularPrice(size, code);
                    break;

                case PackageSizes.M:
                    Rule = new RegularPrice(size, code);
                    break;

                case PackageSizes.L:
                    if (DiscountData.LargaParcelCount == 3)
                    {
                        Rule = new PromotionPriceLargeParcel(size, code);
                    }
                    else
                    {
                        Rule = new RegularPrice(size, code);
                    }
                    DiscountData.LargaParcelCount++;
                    break;
                }
                break;

            case CarrierCodes.MR:
                switch (size)
                {
                case PackageSizes.S:
                    Rule = new PromotionPriceSmallParcel(size, code);
                    break;

                case PackageSizes.M:
                    Rule = new RegularPrice(size, code);
                    break;

                case PackageSizes.L:
                    Rule = new RegularPrice(size, code);
                    break;
                }
                break;
            }
        }
Example #4
0
        public override void GeneratePricing(PackageSizes size, CarrierCodes carrierCode)
        {
            var regularPrice = GetProviderPrice(size, carrierCode);
            var discount     = regularPrice;

            if (!DiscountData.IsLargeParcelDiscounted)
            {
                if (DiscountData.DiscountAmount >= discount)
                {
                    SetPricingValuesWithMaxDiscount(regularPrice, discount);
                }
                else
                {
                    SetPricingValuesWithAvilableDiscount(regularPrice, discount);
                }
            }
        }
Example #5
0
        public decimal GetProviderPrice(PackageSizes size, CarrierCodes carrierCode)
        {
            var providerPrice = PriceData.ProvidersPrices.FirstOrDefault(p => p.Provider == carrierCode && p.Size == size);

            return(providerPrice.Price);
        }
Example #6
0
 public PromotionPriceSmallParcel(PackageSizes size, CarrierCodes carrierCode)
 {
     GeneratePricing(size, carrierCode);
 }
Example #7
0
 private string ParseCarrierCodeToString(CarrierCodes code)
 {
     return(Enum.GetName(code));
 }
 public abstract void GeneratePricing(PackageSizes size, CarrierCodes carrierCode);
Example #9
0
 public override void GeneratePricing(PackageSizes size, CarrierCodes carrierCode)
 {
     Price = GetProviderPrice(size, carrierCode);
 }
Example #10
0
 public RegularPrice(PackageSizes size, CarrierCodes carrierCode)
 {
     GeneratePricing(size, carrierCode);
 }