Exemplo n.º 1
0
        public static Results Analyse(TermsEntity termsEntity)
        {
            var currentDate = termsEntity.Start;
            var daysWorkedThisWeek = 0;
            var contractAnalysesResults = new Results(termsEntity);

            var weekIndex = 0;
            for (var day = 0; day < 7 * (termsEntity.DurationWeeks + termsEntity.LieuPaymentWeeks); day++)
            {
                if (!DateInterogater.IsWeekend(currentDate) && day < 7 * termsEntity.DurationWeeks)
                {
                    daysWorkedThisWeek += 1;
                }
                else if (daysWorkedThisWeek > 0)
                {
                    var weeklyAnalyses = new WeeklyAnalyses(weekIndex, daysWorkedThisWeek, termsEntity);

                    contractAnalysesResults.WeeklyAnalyseses.Add(weeklyAnalyses);

                    daysWorkedThisWeek = 0;
                    weekIndex++;
                }
                currentDate = currentDate.AddDays(1);
            }
            return contractAnalysesResults;
        }
Exemplo n.º 2
0
 private static void PrintCurrentWeekAndWeeksRemaining(Results car)
 {
     if (car.Terms.Start > car.Now)
     {
         Console.WriteLine("This contract starts in {0} weeks.", Math.Round(car.Terms.Start.Subtract(car.Now).TotalDays / 7));
     }
     else if (!car.Terms.IsFullyPaid)
     {
         Console.WriteLine("You are currently in week {0} and have this week plus {1} working weeks remaining.", car.CurrentWeekIndexZeroBased + 1, car.Terms.DurationWeeks - car.CurrentWeekIndexZeroBased - car.Terms.LieuPaymentWeeks +1);
     }
 }
Exemplo n.º 3
0
        public static void Print(Results car)
        {
            Formatting.PrintRow(false, "Week End", "Base", "VAT", "VAT-M", "VAT-D", "GROSS", "NET", "CUM.NET");

            for (var i = 0; i < car.WeeklyAnalyseses.Count; i++)
            {
                var wa = car.WeeklyAnalyseses[i];
                Formatting.PrintRow(
                    i == car.CurrentWeekIndexZeroBased,
                    Formatting.FormattedWeek(i, wa.BusinessWeekEnd),
                    wa.BasicIncome,
                    wa.TotalVat,
                    wa.VatMargin,
                    wa.VatDue,
                    wa.GrossIncome,
                    wa.NetIncome,
                    car.WeeklyAnalyseses.Take(i).Sum(x => x.NetIncome));
            }

            Formatting.PrintRow(false,
                                Formatting.FormattedWeek(
                                    car.WeeklyAnalyseses.Count - 1 + car.Terms.LieuPaymentWeeks,
                                    car.WeeklyAnalyseses.Last().BusinessWeekEnd.AddDays(car.Terms.LieuPaymentWeeks * 7)
                                ),
                                car.BasicIncomeEarned,
                                car.TotalVat,
                                car.VatMargin,
                                car.TotalVatDue,
                                car.GrossIncome,
                                car.NetIncome,
                                car.NetIncome);

            Console.WriteLine("");
            Console.WriteLine("Payment to date: {0} gross\t| {1} net", Formatting.FormatCurrencyWithPadding(false, car.GrossIncomeToDate), Formatting.FormatCurrencyWithPadding(false, car.NetIncomeToDate));
            Console.WriteLine("Remaining Value: {0} gross\t| {1} net", Formatting.FormatCurrencyWithPadding(false, car.GrossIncome - car.GrossIncomeToDate), Formatting.FormatCurrencyWithPadding(false, car.NetIncome - car.NetIncomeToDate));
            Console.WriteLine("VAT due to date: {0}", Formatting.FormatCurrencyWithPadding(false, car.VatDueToDate));
            Console.WriteLine("Aprx. Corp. tax: {0}", Formatting.FormatCurrencyWithPadding(false, car.TotalCorporationTaxAprx));
            Console.WriteLine("Value after tax: {0}", Formatting.FormatCurrencyWithPadding(false, car.NetIncome - car.TotalCorporationTaxAprx));

            Console.WriteLine("");

            PrintCurrentWeekAndWeeksRemaining(car);
            PrintStartedDaysAgoAndEndsInDays(car);
            PrintDaysWorkedDaysRemaining(car);

            Console.WriteLine("");
            Console.WriteLine("");
        }
Exemplo n.º 4
0
 private static void PrintDaysWorkedDaysRemaining(Results car)
 {
     if (car.Terms.IsFullyPaid)
     {
         Console.WriteLine("You worked {0} days.", car.WorkDaysCompletedExclusive);
     }
     else if (car.Terms.Start > car.Now)
     {
         Console.WriteLine("You have not started this contract yet.");
     }
     else
     {
         Console.WriteLine("Excluding today, you have worked {0} working days and have {1} working days to go",
                           car.WorkDaysCompletedExclusive,
                           car.WorkDaysRemainingInclusive);
     }
 }
Exemplo n.º 5
0
 private static void PrintStartedDaysAgoAndEndsInDays(Results car)
 {
     var ends = Math.Round(car.Terms.PaymentEnd.Subtract(car.Now).TotalDays);
     if (car.Terms.IsFullyPaid)
     {
         Console.WriteLine("This contract ended {0} days ago.", Math.Abs(ends));
     }
     else if (car.Terms.Start > car.Now)
     {
         Console.WriteLine("This contract starts in {0} days and ends in {1} days.", Math.Abs(Math.Round(car.Now.Subtract(car.Terms.Start).TotalDays)), ends);
     }
     else
     {
         Console.WriteLine("This contract started {0} days ago and ends in {1} days.", Math.Round(car.Now.Subtract(car.Terms.Start).TotalDays), ends);
     }
 }