static void Main(string[] args)
static public void Question1()
decimal retailPricePerUnit = 8.98m;
int unitsReturned = 3569;
decimal distributionDiscounts = 68845.36m;
decimal royaltyRate = 0.045m;
decimal grossSales = CalculateGrossSales(unitsSold, retailPricePerUnit);
decimal netSales = CalculateNetSales(unitsSold, unitsReturned, retailPricePerUnit, distributionDiscounts);
decimal royaltyAmount = CalculateRoyalty(netSales, royaltyRate);
Console.WriteLine($"Question 1:");
Console.WriteLine($"A. Gross sales of Cowboy Jim action figure in Q1: ${grossSales:F2}");
Console.WriteLine($"B. Net sales after deductions in Q1: ${netSales:F2}");
Console.WriteLine($"C. Royalty amount ShaneTime Entertainment will receive for Q1: ${royaltyAmount:F2}");
static public void Question2()
decimal retailPricePerUnitCowboyJim = 8.98m;
int unitsSoldCowboyJimQ2 = 129747;
int unitsReturnedCowboyJimQ2 = 3747;
decimal tradeDiscountsCowboyJimQ2 = 72287.63m;
decimal royaltyRateCowboyJim = 0.045m;
decimal retailPricePerUnitCharlieHorse = 6.99m;
int unitsSoldCharlieHorseQ2 = 62875;
int unitsReturnedCharlieHorseQ2 = 1478;
decimal tradeDiscountsCharlieHorseQ2 = 16521.06m;
decimal royaltyRateCharlieHorse = 0.0348m;
decimal commissionRateArmstrongAgency = 0.05m;
decimal netSalesCowboyJimQ2 = CalculateNetSales(unitsSoldCowboyJimQ2, unitsReturnedCowboyJimQ2, retailPricePerUnitCowboyJim, tradeDiscountsCowboyJimQ2);
decimal netSalesCharlieHorseQ2 = CalculateNetSales(unitsSoldCharlieHorseQ2, unitsReturnedCharlieHorseQ2, retailPricePerUnitCharlieHorse, tradeDiscountsCharlieHorseQ2);
decimal combinedNetSalesQ2 = netSalesCowboyJimQ2 + netSalesCharlieHorseQ2;
int totalUnitsSoldCowboyJimQ1 = 123569;
int totalUnitsReturnedCowboyJimQ1 = 3569;
int totalUnitsSoldCowboyJim = totalUnitsSoldCowboyJimQ1 + unitsSoldCowboyJimQ2;
int totalUnitsReturnedCowboyJim = totalUnitsReturnedCowboyJimQ1 + unitsReturnedCowboyJimQ2;
decimal returnRateCowboyJim = CalculateItemReturnRate(totalUnitsSoldCowboyJim, totalUnitsReturnedCowboyJim);
decimal royaltyCowboyJimQ2 = CalculateRoyalty(netSalesCowboyJimQ2, royaltyRateCowboyJim);
decimal royaltyCharlieHorseQ2 = CalculateRoyalty(netSalesCharlieHorseQ2, royaltyRateCharlieHorse);
decimal totalRoyaltyQ2 = royaltyCowboyJimQ2 + royaltyCharlieHorseQ2;
decimal totalArmstrongAgencyCommissionQ2 = CalculateRoyalty(totalRoyaltyQ2, commissionRateArmstrongAgency);
Console.WriteLine($"\nQuestion 2:");
Console.WriteLine($"A. Combined net sales of Cowboy Jim and Charlie Horse for Q2: ${combinedNetSalesQ2:F2}");
Console.WriteLine($"B. Return rate of Cowboy Jim action figure for Q1 and Q2: {returnRateCowboyJim:P}");
Console.WriteLine($"C. Commission due to the Armstrong Agency for both Cowboy Jim and Charlie in Q2: ${totalArmstrongAgencyCommissionQ2:F2}");
static public void Question3()
int unitsSoldCowboyJimQ1 = 123569;
int unitsSoldCowboyJimQ2 = 129747;
decimal retailPricePerUnitCowboyJim = 8.98m;
int unitsReturnedCowboyJimQ2 = 3747;
decimal tradeDiscountsCowboyJimQ2 = 72287.63m;
decimal royaltyRateCowboyJim = 0.045m;
decimal commissionRateArmstrongAgency = 0.05m;
decimal cowboyJimGrowthRateQ1Q2 = decimal.Divide(unitsSoldCowboyJimQ2 - unitsSoldCowboyJimQ1, unitsSoldCowboyJimQ1);
int unitsReturnedCowboyJimQ4 = Decimal.ToInt32(ProjectGrowth(Convert.ToDecimal(unitsReturnedCowboyJimQ2), cowboyJimGrowthRateQ1Q2, 2));
decimal netSalesCowboyJimQ2 = CalculateNetSales(unitsSoldCowboyJimQ2, unitsReturnedCowboyJimQ2, retailPricePerUnitCowboyJim, tradeDiscountsCowboyJimQ2);
decimal royaltyCowboyJimQ2 = CalculateRoyalty(netSalesCowboyJimQ2, royaltyRateCowboyJim);
decimal totalArmstrongAgencyCommissionQ2 = CalculateRoyalty(royaltyCowboyJimQ2, commissionRateArmstrongAgency);
decimal projectedQ4CowboyJimRoyalties = ProjectGrowth(royaltyCowboyJimQ2, cowboyJimGrowthRateQ1Q2, 2);
decimal projectedQ4AgencyCommission = ProjectGrowth(totalArmstrongAgencyCommissionQ2, cowboyJimGrowthRateQ1Q2, 2);
Console.WriteLine($"\nQuestion 3:");
Console.WriteLine($"A. Projected Q4 returns for Cowboy Jim: {unitsReturnedCowboyJimQ4:F0} units");
Console.WriteLine($"B. Projected Q4 royalty amount for Cowboy Jim: ${projectedQ4CowboyJimRoyalties:F2}");
Console.WriteLine($"C. Projected Q4 agency commission for Cowboy Jim: ${projectedQ4AgencyCommission:F2}");
static public void Question4()
decimal exchangeRateJPYToUSD = 0.0092m;
decimal exchangeRateRUBToUSD = 0.016m;
int unitsSoldJapan = 89125;
decimal pricePerUnitJapanJPY = 651.09m;
int unitsReturnedJapan = 987;
decimal discountsJapanJPY = 1160567.93m;
int unitsSoldRussia = 101587;
decimal pricePerUnitRussiaRUB = 476.88m;
int unitsReturnedRussia = 2478;
decimal discountsRussiaRUB = 1453344.26m;
int unitsSoldUS = 286417;
decimal pricePerUnitUS = 7.99m;
int unitsReturnedUS = 6521;
decimal discountsUS = 85899.62m;
decimal netSalesJapan = CalculateNetSales(unitsSoldJapan, unitsReturnedJapan, pricePerUnitJapanJPY, discountsJapanJPY);
decimal netSalesRussia = CalculateNetSales(unitsSoldRussia, unitsReturnedRussia, pricePerUnitRussiaRUB, discountsRussiaRUB);
decimal netSalesUS = CalculateNetSales(unitsSoldUS, unitsReturnedUS, pricePerUnitUS, discountsUS);
decimal netSalesJapanUSD = ConvertCurrencyToUSD(netSalesJapan, exchangeRateJPYToUSD);
decimal netSalesRussiaUSD = ConvertCurrencyToUSD(netSalesRussia, exchangeRateRUBToUSD);
decimal totalNetSalesUSD = netSalesJapanUSD + netSalesRussiaUSD + netSalesUS;
decimal royaltyJapanUSD = CalculateRoyalty(netSalesJapanUSD, 0.045m);
decimal royaltyRussiaUSD = CalculateRoyalty(netSalesRussiaUSD, 0.045m);
decimal commissionRussiaUSD = CalculateRoyalty(royaltyRussiaUSD, 0.05m);
decimal royaltyUS = CalculateRoyalty(netSalesUS, 0.045m);
decimal ArmstrongCommissionUS = CalculateRoyalty(royaltyUS, 0.05m);
decimal laboffeCommissionUS = CalculateRoyalty(ArmstrongCommissionUS, 0.025m);
Console.WriteLine($"\nQuestion 4:");
Console.WriteLine($"A. Total net sales in USD from all countries in Q2: ${totalNetSalesUSD:F2}");
Console.WriteLine($"B. ShaneTime Entertainment's royalty in USD on Cowboy Jim sales in Japan: ${royaltyJapanUSD:F2}");
Console.WriteLine($"C. Armstrong Agency's commission in USD for Cowboy Jim Sales in Russia: ${commissionRussiaUSD:F2}");
Console.WriteLine($"D. LaBoffe LLC's commission in USD on Cowboy Jim sales in the United States: ${laboffeCommissionUS:F2}");
private static decimal CalculateGrossSales(int unitsSold, decimal pricePerUnit)
return unitsSold * pricePerUnit;
private static decimal CalculateNetSales(int unitsSold, int unitsReturned, decimal pricePerUnit, decimal distributionDiscounts)
return decimal.Multiply(unitsSold - unitsReturned, pricePerUnit) - distributionDiscounts;
private static decimal CalculateItemReturnRate(int unitsSold, int unitsReturned)
return decimal.Divide(unitsReturned, unitsSold);
private static decimal CalculateRoyalty(decimal netSales, decimal royaltyRate)
return netSales * royaltyRate;
private static decimal ConvertCurrencyToUSD(decimal priceInLocalCurrency, decimal exchangeRateToUSD)
return priceInLocalCurrency * exchangeRateToUSD;
private static decimal ProjectGrowth(decimal startingAmount, decimal growthRate, int iterations)
decimal growthProjection = startingAmount;
for (int i = 0; i < iterations; i++)
growthProjection = decimal.Multiply(growthProjection , (1 + growthRate));