mam typu enum nazwie PaymentFrequency
których wartości wskazują, ile rocznie płatności dokonywane są ... Więc mamIle dni, aby dodać do „pół-miesięczny”
public enum PaymentFrequency
{
None = 0,
Annually = 1,
SemiAnnually = 2,
EveryFourthMonth = 3,
Quarterly = 4,
BiMonthly = 6,
Monthly = 12,
EveryFourthWeek = 13,
SemiMonthly = 24,
BiWeekly = 26,
Weekly = 52
}
podstawie NumberOfPayments
, PaymentFrequency
i FirstPaymentDate
(typu DateTimeOffset) Chcę obliczyć LastPaymentDate
. Ale mam problem na zastanawianie się, jak wiele jednostek czasu (dni, miesięcy), aby dodać w przypadku semimonthly ...
switch (paymentFrequency)
{
// add years...
case PaymentFrequency.Annually:
LastPaymentDate = FirstPaymentDate.AddYears(NumberOfPayments - 1);
break;
// add months...
case PaymentFrequency.SemiAnnually:
LastPaymentDate = FirstPaymentDate.AddMonths((NumberOfPayments - 1) * 6); // 6 months
break;
case PaymentFrequency.EveryFourthMonth:
LastPaymentDate = FirstPaymentDate.AddMonths((NumberOfPayments - 1) * 4); // 4 months
break;
case PaymentFrequency.Quarterly:
LastPaymentDate = FirstPaymentDate.AddMonths((NumberOfPayments - 1) * 3); // 3 months
break;
case PaymentFrequency.BiMonthly:
LastPaymentDate = FirstPaymentDate.AddMonths((NumberOfPayments - 1) * 2); // 2 months
break;
case PaymentFrequency.Monthly:
LastPaymentDate = FirstPaymentDate.AddMonths(NumberOfPayments - 1);
break;
// add days...
case PaymentFrequency.EveryFourthWeek:
LastPaymentDate = FirstPaymentDate.AddDays((NumberOfPayments - 1) * 4 * 7); // 4 weeks (1 week = 7 days)
break;
case PaymentFrequency.SemiMonthly:
// NOTE: how many days in semi month? AddMonths (0.5) does not work :)
LastPaymentDate = FirstPaymentDate.AddMonths((NumberOfPayments - 1) * 0.5); // 2 weeks (1 week = 7 days)
break;
case PaymentFrequency.BiWeekly:
LastPaymentDate = FirstPaymentDate.AddDays((NumberOfPayments - 1) * 2 * 7); // 2 weeks (1 week = 7 days)
break;
case PaymentFrequency.Weekly:
LastPaymentDate = FirstPaymentDate.AddDays((NumberOfPayments - 1) * 7); // 1 week (1 week = 7 days)
break;
case PaymentFrequency.None:
default:
throw new ArgumentException("Payment frequency is not initialized to valid value!", "paymentFrequency");
}
tak, to ile dni/miesięcy powinno się używać przy użyciu semimonthly? Czy jest to możliwe bez znajomości dokładnych # dni dla każdego miesiąca pomiędzy? Czy to naprawdę proste, a ja po prostu zabrakło mi kofeiny i nie widzę lasu dla drzew :)
Jakie są Państwa wymagania biznesowe w przypadku półrocza? Jakie dwa dni w miesiącu? Czy są naprawione? Lub po prostu zawsze 2 różne dni w odstępie 15 dni (tj.2 i 17, 3 i 18, 4 i 19, 5 i 20 itd.) –
@ James Michael Hare Powiedzmy 1 i 16 na pytanie. Myślę, że wiem, dokąd to zmierza ... – zam6ak
A czy wiesz, że twój pierwszy miesiąc płatności zawsze będzie poprawnie wypadał 1? –