Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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();
        }
Esempio n. 7
0
        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();
        }
Esempio n. 8
0
        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);
        }