public ValidShipment(DateTime vintDate, PackageSizes packageSize, CarrierCodes carrierCode) { VintDate = vintDate; MonthlyDiscountService.UpdateDiscountsOnNewMonth(VintDate); PackageSize = packageSize; CarrierCode = carrierCode; SetPricingRule(PackageSize, CarrierCode); }
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); } }
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; } }
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); } } }
public decimal GetProviderPrice(PackageSizes size, CarrierCodes carrierCode) { var providerPrice = PriceData.ProvidersPrices.FirstOrDefault(p => p.Provider == carrierCode && p.Size == size); return(providerPrice.Price); }
public PromotionPriceSmallParcel(PackageSizes size, CarrierCodes carrierCode) { GeneratePricing(size, carrierCode); }
private string ParsePackageSizeToString(PackageSizes size) { return(Enum.GetName(size)); }
public abstract void GeneratePricing(PackageSizes size, CarrierCodes carrierCode);
public override void GeneratePricing(PackageSizes size, CarrierCodes carrierCode) { Price = GetProviderPrice(size, carrierCode); }
public RegularPrice(PackageSizes size, CarrierCodes carrierCode) { GeneratePricing(size, carrierCode); }