public static FeeConfig GetFeeConfiguration() { var feeConfig = new FeeConfig(); var feeConfigJson = System.IO.File.ReadAllText("./fees.config.json"); using (var memStream = new MemoryStream(Encoding.Unicode.GetBytes(feeConfigJson))) { var deserializer = new DataContractJsonSerializer(typeof(FeeConfig)); feeConfig = (FeeConfig)deserializer.ReadObject(memStream); } return(feeConfig); }
private void ShowInvoiceHistory(InvoiceHistory invoiceHistory, Price.ShowFormat priceFormat) { dataGridView.Rows.Clear(); if (invoiceHistory == null) { return; } foreach (InvoiceShared invoice in invoiceHistory.Invoices) { FeeConfig feeConfig = invoiceHistory.FeeConfigHistory.GetFeeConfigHistoryForPeriod(invoice).FirstOrDefault(); invoice.SetFeeConfig(feeConfig); ShowSharedInvoice(invoice, priceFormat); } dataGridView.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); }
private static bool CalculateEstimatedFee(InvoiceShared estimatedInvoice, FeeConfig feeConfig) { Contract.Requires(estimatedInvoice != null); Contract.Requires(feeConfig != null); if (!CalculateCommonEstimatedBasicFee(estimatedInvoice, feeConfig)) { return(false); } if (!CalculateCommonEstimatedUsageFee(estimatedInvoice, feeConfig)) { return(false); } foreach (var userInvoice in estimatedInvoice.UserInvoices) { CalculateUserEstimatedBasicFee(estimatedInvoice, userInvoice, estimatedInvoice.UserInvoices.Count, feeConfig); CalculateUserEstimatedUsageFee(userInvoice, feeConfig); } return(true); }
private static bool CalculateCommonEstimatedBasicFee(InvoiceShared estimatedInvoice, FeeConfig feeConfig) { Contract.Requires(estimatedInvoice != null); Contract.Requires(feeConfig != null); if (estimatedInvoice.Balanced == false) { estimatedInvoice.GetBasicFee().CleanWaterFee = (estimatedInvoice.GetMonths() * feeConfig.GetMonthlyCleanWaterBasicFeeWithoutVAT()).RoundToCents(); estimatedInvoice.GetBasicFee().WasteWaterFee = (estimatedInvoice.GetMonths() * feeConfig.GetMonthlyWasteWaterBasicFeeWithoutVAT()).RoundToCents(); return(true); } return(false); }
private static bool CalculateCommonRealBasicFee(InvoiceShared realInvoice, InvoiceShared estimatedInvoice, FeeConfig feeConfig) { Contract.Requires(realInvoice != null); Contract.Requires(estimatedInvoice != null); Contract.Requires(feeConfig != null); realInvoice.GetBasicFee().CleanWaterFee += (estimatedInvoice.GetMonths() * feeConfig.GetMonthlyCleanWaterBasicFeeWithoutVAT()).RoundToCents(); realInvoice.GetBasicFee().WasteWaterFee += (estimatedInvoice.GetMonths() * feeConfig.GetMonthlyWasteWaterBasicFeeWithoutVAT()).RoundToCents(); return(true); }
private static void CalculateUserEstimatedBasicFee(DateRange invoicePeriod, UserInvoice userEstimatedInvoice, int userCount, FeeConfig feeConfig) { Contract.Requires(invoicePeriod != null); Contract.Requires(userEstimatedInvoice != null); Contract.Requires(feeConfig != null); Contract.Requires(userCount > 0); userEstimatedInvoice.GetBasicFee().CleanWaterFee = (invoicePeriod.GetMonths() * feeConfig.GetMonthlyCleanWaterBasicFeeWithoutVAT() / userCount).RoundToCents(); userEstimatedInvoice.GetBasicFee().WasteWaterFee = (invoicePeriod.GetMonths() * feeConfig.GetMonthlyWasteWaterBasicFeeWithoutVAT() / userCount).RoundToCents(); }
private static void CalculateUserEstimatedUsageFee(UserInvoice userEstimatedInvoice, FeeConfig feeConfig) { Contract.Requires(userEstimatedInvoice != null); Contract.Requires(feeConfig != null); userEstimatedInvoice.GetUsageFee().CleanWaterFee = (userEstimatedInvoice.GetConsumption().Estimated *feeConfig.GetMonthlyCleanWaterUsageFeeWithoutVAT()).RoundToCents(); userEstimatedInvoice.GetUsageFee().WasteWaterFee = (userEstimatedInvoice.GetConsumption().Estimated *feeConfig.GetMonthlyWasteWaterUsageFeeWithoutVAT()).RoundToCents(); }
private static bool CalculateRealFee(InvoiceShared realInvoice, InvoiceShared estimatedInvoice, FeeConfig feeConfig) { Contract.Requires(realInvoice != null); Contract.Requires(estimatedInvoice != null); Contract.Requires(feeConfig != null); if (!CalculateCommonRealBasicFee(realInvoice, estimatedInvoice, feeConfig)) { return(false); } if (!CalculateCommonRealUsageFee(realInvoice, estimatedInvoice, feeConfig)) { return(false); } foreach (var userInvoice in realInvoice.UserInvoices) { UserInvoice estimatedUserInvoice = estimatedInvoice.UserInvoices.GetInvoiceByOwner(userInvoice.InvoiceOwner); CalculateUserRealBasicFee(estimatedInvoice, userInvoice, realInvoice.UserInvoices.Count, feeConfig); CalculateUserRealUsageFee(userInvoice, estimatedUserInvoice, feeConfig); } return(true); }