2011-03-22 12 views
6

मैंने अपनी नई बिलिंग प्रणाली के लिए कुछ कोड लिखा था। इसका उद्देश्य ग्राहक को हर महीने उसी दिन बिल करना है। (नहीं 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 नुकसान कर रहे हैं:

  1. अगर उसकी cycleDate.Day 31 है और चालू माह के केवल 29 दिनों
  2. cycleDate है 2 9 फरवरी 2012 - उन्हें केवल लीप वर्षों पर बिल मिलेगा

क्या यहां कोई आम सर्वोत्तम अभ्यास है?

तो यह लगता है कि

  1. इस खाते को पहले से ही इस महीने के बिल भेजा गया है की जाँच करने के एक गुच्छा बातें की तरह?
  2. चक्र दिन चालू माह में मौजूद है
  3. से चक्र दिन अधिक से अधिक या आज की तारीख के बराबर है करता है (यह तब लेन-देन से पहले दिन में विफल रहा है आदर्श है)

धन्यवाद!

उत्तर

0

ठीक है, मेरा मानना ​​है कि मैं पूरी तरह से पर यह सोच रहा हूं। यह आसान है और सब कुछ शामिल है:

bool NeedToBill = ((DateTime.UTCNow – LastBillDate) >= 30 Days) 

यह जरूरी ठीक उसी दिन पर बिल नहीं करेगा, लेकिन यह पर्याप्त करीब है। यदि लेन-देन को किसी दिन के लिए अस्वीकार कर दिया गया था, तो यह लचीलापन भी जोड़ता है, या यदि अगली बार इसे चलाने के लिए निर्धारित समय 1 दिन तक नहीं चलाया जाता है तो यह इसे उठाएगा।

+4

पर खाता क्या आप वाकई यह काम करते हैं? ऐसा लगता है कि आप प्रत्येक वर्ष बिलिंग तिथि ~ 5 दिन प्रतिस्थापित करेंगे, अंततः अपने ग्राहकों को अधिक चार्ज करेंगे (प्रत्येक 6 वर्षों में 1 अतिरिक्त बिल)। यदि आपकी कंपनी के पास पर्याप्त ग्राहक हैं तो क्लास एक्शन मुकदमा के लिए एक अच्छा मामला लगता है ... –

+0

डेटटाइम। AddMonths खाते में लीप साल और विभिन्न ईओएम तिथियां लेता है। – gibbocool

6

केवल 1 - 28 के बीच बिलिंग दिन की पसंद की अनुमति दें। मेरे अनुभव में यह है कि जब कोई विकल्प दिया जाता है तो अधिकांश क्रेडिट कार्ड/ऋण कंपनियां इससे निपटती हैं।

+0

हालांकि यह काम करता है, यह 29, 30 और 31 के समर्थन के लिए एक सौदा का बड़ा नहीं है। –

+1

सच है - लेकिन यह शामिल सभी के लिए इसे सरल बनाता है। ओपी ने हर महीने उसी दिन बिलिंग की मांग की, इसलिए यह एकमात्र संभावित उत्तर है। –

2

प्रत्येक महीने का क्या मतलब है?

यदि मैं ग्राहक हूं, तो मैं प्रत्येक महीने 16 वें स्थान पर बिल करना चाहता हूं। कोई बात नहीं। अगर मैं हर महीने 31 वें दिन बिल करना चाहता हूं तो स्पष्ट मुद्दा यह नहीं है कि आपके प्रश्न में बताया गया है कि सभी महीनों में 31 दिन नहीं हैं।

क्यों दिनों की संख्या के लिए वर्तमान माह की जांच नहीं करें। यदि 31 दिनों से कम है, तो बिल की तारीख के आखिरी दिन को बिल डेट करें।

क्या समस्या के लिए और कुछ है?

0

मैं कहूंगा कि उसे 1-28 या किसी भी दिन के बीच चुनना है, लेकिन महीने के आखिरी दिन चार्ज करें यदि वर्तमान महीने में महीने के चुने हुए दिन से कम दिन है।

+0

वे चक्र दिनांक = दिनांक खाता नहीं चुनते हैं – aron

+1

अच्छी तरह से वही बात, जिस दिन उन्होंने खाता बनाया है या महीने के आखिरी दिन को बनाया है, यदि वर्तमान महीने में उनके द्वारा बनाए गए महीने के दिन से कम दिन हैं –

संबंधित मुद्दे