Ejemplo n.º 1
0
        private static ulong CalculateEstimatedUserConsumption(UserInvoice invoice, ulong realUserConsumption, ConsumptionValue commonConsumption)
        {
            Contract.Requires(commonConsumption != null);

            decimal estimatedUserConsumption = Convert.ToDecimal(commonConsumption.Estimated * realUserConsumption) / Convert.ToDecimal(commonConsumption.Real);

            invoice.GetConsumption().Estimated = Convert.ToUInt64(Math.Round(estimatedUserConsumption));
            return(invoice.GetConsumption().Estimated);
        }
Ejemplo n.º 2
0
        private static void FineGrainEstimatedUserConsumption(IEnumerable <UserInvoice> userInvoices,
                                                              ulong totalCalculatedEstimatedConsumption, ConsumptionValue commonConsumption)
        {
            long estimatedConsumptionDiff = Convert.ToInt64(totalCalculatedEstimatedConsumption - commonConsumption.Estimated);

            foreach (var userInvoice in userInvoices)
            {
                if (estimatedConsumptionDiff > 0)
                {
                    userInvoice.GetConsumption().Estimated--;
                    estimatedConsumptionDiff--;
                }
                else if (estimatedConsumptionDiff < 0)
                {
                    userInvoice.GetConsumption().Estimated++;
                    estimatedConsumptionDiff++;
                }
                else
                {
                    return;
                }
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Calculate consumption sum
        /// </summary>
        /// <param name="consumption"></param>
        /// <returns></returns>
        public static ulong Sum(this ConsumptionValue consumption)
        {
            Contract.Requires(consumption != null);

            return(consumption.Estimated + consumption.Real);
        }