मैंने अपनी नई बिलिंग प्रणाली के लिए कुछ कोड लिखा था। इसका उद्देश्य ग्राहक को हर महीने उसी दिन बिल करना है। (नहीं 1 या महीने के अंतिम दिन)मासिक बिलिंग चक्र के लिए सर्वश्रेष्ठ पैटर्न
static bool NeedToBill(DateTime planLastBilled, DateTime cycleDate)
{
// is today the same date as the cycleDate AND is was the planLastBilled not the same day as today?
if (DateTime.UtcNow.Day.Equals(cycleDate.Day) && !DateTime.UtcNow.Day.Equals(planLastBilled))
return true;
else
return false;
}
2 नुकसान कर रहे हैं:
- अगर उसकी cycleDate.Day 31 है और चालू माह के केवल 29 दिनों
- cycleDate है 2 9 फरवरी 2012 - उन्हें केवल लीप वर्षों पर बिल मिलेगा
क्या यहां कोई आम सर्वोत्तम अभ्यास है?
तो यह लगता है कि
- इस खाते को पहले से ही इस महीने के बिल भेजा गया है की जाँच करने के एक गुच्छा बातें की तरह?
- चक्र दिन चालू माह में मौजूद है
- से चक्र दिन अधिक से अधिक या आज की तारीख के बराबर है करता है (यह तब लेन-देन से पहले दिन में विफल रहा है आदर्श है)
धन्यवाद!
पर खाता क्या आप वाकई यह काम करते हैं? ऐसा लगता है कि आप प्रत्येक वर्ष बिलिंग तिथि ~ 5 दिन प्रतिस्थापित करेंगे, अंततः अपने ग्राहकों को अधिक चार्ज करेंगे (प्रत्येक 6 वर्षों में 1 अतिरिक्त बिल)। यदि आपकी कंपनी के पास पर्याप्त ग्राहक हैं तो क्लास एक्शन मुकदमा के लिए एक अच्छा मामला लगता है ... –
डेटटाइम। AddMonths खाते में लीप साल और विभिन्न ईओएम तिथियां लेता है। – gibbocool