public void CalculatethePackageAmountByPeriodTest() { FinanceBL financeBL = new FinanceBL(DataContext); // Get mega project package List <ProjectPaymentPackageDetails> projectPackageDetails = Utils.GetSystemProjectPackageDetails(); ProjectPaymentPackageDetails projectMegaPackage = projectPackageDetails.Where(ppd => ppd.PackageName == "MEGA").FirstOrDefault(); // Get mega inventory package List <InventoryPaymentPackageDetails> inventoryPackageDetails = Utils.GetSystemInventoryPackageDetails(); InventoryPaymentPackageDetails inventoryMegaPackage = inventoryPackageDetails.Where(ppd => ppd.PackageName == "MEGA").FirstOrDefault(); // get discount code usage DiscountCodeUsage discountCodeUsage = new DiscountCodeUsageMock(DataContext).GetDiscountCodeUsage(true, null); DataContext.SaveChanges(); // get code ids int monthlyPaymentDurationCodeId = Utils.GetCodeIdByCodeValue("PaymentPackageDuration", "MONTHLY"); int annualPaymentDurationCodeId = Utils.GetCodeIdByCodeValue("PaymentPackageDuration", "ANUAL"); int projectPackageTypeId = Utils.GetCodeIdByCodeValue("PaymentPackageType", "PROJECT"); int inventoryPackageTypeId = Utils.GetCodeIdByCodeValue("PaymentPackageType", "INVENTORY"); // validate decimal?amount = financeBL.CalculatethePackageAmountByPeriod(inventoryPackageTypeId, inventoryMegaPackage.PackageTypeId, monthlyPaymentDurationCodeId); Assert.IsTrue(inventoryMegaPackage.Amount == amount); amount = financeBL.CalculatethePackageAmountByPeriod(inventoryPackageTypeId, inventoryMegaPackage.PackageTypeId, annualPaymentDurationCodeId); Assert.IsTrue(inventoryMegaPackage.AnualAmount == amount); amount = financeBL.CalculatethePackageAmountByPeriod(projectPackageTypeId, projectMegaPackage.PackageTypeId, monthlyPaymentDurationCodeId); Assert.IsTrue(projectMegaPackage.Amount == amount); amount = financeBL.CalculatethePackageAmountByPeriod(projectPackageTypeId, projectMegaPackage.PackageTypeId, annualPaymentDurationCodeId); Assert.IsTrue(projectMegaPackage.AnualAmount == amount); }
public void AddDiscountCodeUsageBySBAdminTest() { FinanceBL financeBL = new FinanceBL(DataContext); DiscountCodeUsage discountCodeUsage = new DiscountCodeUsageMock(DataContext).GetDiscountCodeUsage(true, null); // SB admin apply discount code. financeBL.AddDiscountCodeUsageBySBAdmin(discountCodeUsage, 0); int companyId = discountCodeUsage.CompanyId; DiscountCodeUsage discountCodeUsageDB = financeBL.GetLatestDiscountCodeUsage(companyId); Assert.IsNotNull(discountCodeUsageDB); Assert.AreEqual(discountCodeUsage, discountCodeUsageDB); // User replace discount code. DiscountCode userDiscount = new DiscountCodeMock(DataContext).GetDiscountCode("DisCode60", 60.00M, 5, 5); DataContext.DiscountCodes.AddObject(userDiscount); financeBL.SaveDiscountCodeUsageToCompany(userDiscount, 0, companyId); financeBL.SaveChanges(); discountCodeUsageDB = financeBL.GetLatestDiscountCodeUsage(companyId); Assert.IsNotNull(discountCodeUsageDB); Assert.AreEqual(userDiscount, discountCodeUsageDB.DiscountCode); // SB admin apply discount code again DiscountCodeUsage discountCodeUsageNew = new DiscountCodeUsageMock(DataContext).GetDiscountCodeUsage(true, companyId); financeBL.AddDiscountCodeUsageBySBAdmin(discountCodeUsageNew, 0); discountCodeUsageDB = financeBL.GetLatestDiscountCodeUsage(companyId); Assert.IsNotNull(discountCodeUsageDB); Assert.AreEqual(discountCodeUsageNew, discountCodeUsageDB); Assert.AreNotEqual(discountCodeUsage, discountCodeUsageNew); }
public void CalculateALLPackageAmountsByPeriodTest() { FinanceBL financeBL = new FinanceBL(DataContext); List <ProjectPaymentPackageDetails> projectPackageDetails = Utils.GetSystemProjectPackageDetails(); ProjectPaymentPackageDetails projectMegaPackage = projectPackageDetails.Where(ppd => ppd.PackageName == "MEGA").FirstOrDefault(); List <InventoryPaymentPackageDetails> inventoryPackageDetails = Utils.GetSystemInventoryPackageDetails(); InventoryPaymentPackageDetails inventoryMegaPackage = inventoryPackageDetails.Where(ppd => ppd.PackageName == "MEGA").FirstOrDefault(); // Create a company DiscountCodeUsage discountCodeUsage = new DiscountCodeUsageMock(DataContext).GetDiscountCodeUsage(true, null); DataContext.SaveChanges(); int monthlyPaymentDurationCodeId = Utils.GetCodeIdByCodeValue("PaymentPackageDuration", "MONTHLY"); int annualPaymentDurationCodeId = Utils.GetCodeIdByCodeValue("PaymentPackageDuration", "ANUAL"); decimal totalDue = financeBL.CalculateALLPackageAmountsByPeriod(projectMegaPackage.PackageTypeId, inventoryMegaPackage.PackageTypeId, monthlyPaymentDurationCodeId); Assert.IsTrue((projectMegaPackage.Amount + inventoryMegaPackage.Amount) == totalDue); totalDue = financeBL.CalculateALLPackageAmountsByPeriod(projectMegaPackage.PackageTypeId, inventoryMegaPackage.PackageTypeId, annualPaymentDurationCodeId); Assert.IsTrue((projectMegaPackage.AnualAmount + inventoryMegaPackage.AnualAmount) == totalDue); }
public void GetDiscountedAmountTest() { FinanceBL financeBL = new FinanceBL(DataContext); List <ProjectPaymentPackageDetails> projectPackageDetails = Utils.GetSystemProjectPackageDetails(); ProjectPaymentPackageDetails projectMegaPackage = projectPackageDetails.Where(ppd => ppd.PackageName == "MEGA").FirstOrDefault(); List <InventoryPaymentPackageDetails> inventoryPackageDetails = Utils.GetSystemInventoryPackageDetails(); InventoryPaymentPackageDetails inventoryMegaPackage = inventoryPackageDetails.Where(ppd => ppd.PackageName == "MEGA").FirstOrDefault(); // Create a company DiscountCodeUsage discountCodeUsage = new DiscountCodeUsageMock(DataContext).GetDiscountCodeUsage(true, null); DataContext.SaveChanges(); int monthlyPaymentDurationCodeId = Utils.GetCodeIdByCodeValue("PaymentPackageDuration", "MONTHLY"); int annualPaymentDurationCodeId = Utils.GetCodeIdByCodeValue("PaymentPackageDuration", "ANUAL"); decimal totalDue = financeBL.CalculateALLPackageAmountsByPeriod(projectMegaPackage.PackageTypeId, inventoryMegaPackage.PackageTypeId, monthlyPaymentDurationCodeId); decimal discountedAmount = financeBL.GetDiscountedAmount(discountCodeUsage.CompanyId, totalDue, monthlyPaymentDurationCodeId, discountCodeUsage, Utils.Today, Utils.Today.AddMonths(1)); Assert.IsTrue((projectMegaPackage.Amount + inventoryMegaPackage.Amount) * (discountCodeUsage.DiscountCode.Discount / 100) == discountedAmount); totalDue = financeBL.CalculateALLPackageAmountsByPeriod(projectMegaPackage.PackageTypeId, inventoryMegaPackage.PackageTypeId, annualPaymentDurationCodeId); discountedAmount = financeBL.GetDiscountedAmount(discountCodeUsage.CompanyId, totalDue, annualPaymentDurationCodeId, discountCodeUsage, Utils.Today, Utils.Today.AddYears(1)); decimal discountedDays = (discountCodeUsage.EndDate - discountCodeUsage.StartDate.Value).Days; decimal totalDays = (Utils.Today.AddYears(1) - Utils.Today).Days; decimal noDiscountedDays = totalDays - discountedDays; decimal testTotalAmount = (((discountedDays / totalDays) * (discountCodeUsage.DiscountCode.Discount / 100)) + (noDiscountedDays / totalDays)) * (projectMegaPackage.AnualAmount + inventoryMegaPackage.AnualAmount); Assert.IsTrue(decimal.Round(testTotalAmount, 2) == discountedAmount); }