J'ai écrit du code pour mon nouveau système de facturation. Le but est de facturer le client le même jour chaque mois. (pas le 1er ou dernier jour du mois)
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; }
4 Réponses :
permet uniquement le choix d'une journée de facturation entre
Bien que cela fonctionne, ce n'est pas si grave d'une affaire de soutien des 29, 30 et 31s.
Vrai - mais cela le simplifie pour toutes les personnes impliquées. L'OP a demandé une facturation le même jour chaque mois, c'est la seule réponse possible.
Que signifie le même jour chaque mois? p>
Si je suis un client, je veux être facturé le 16 chaque mois. Aucun problème. Si je veux être facturé au 31ème de chaque mois, le problème évident n'est pas tous les mois de 31 jours, car vous avez souligné votre question. p>
Pourquoi ne pas vérifier le mois en cours pour le nombre de jours. S'il a moins de 31 jours, faites le dernier jour du mois de la date de la facture. P>
y a-t-il de plus au problème? p>
Je dirais le faire choisir entre 1-28 ou n'importe quel jour, mais payer le dernier jour du mois si le mois en cours a moins de jours que le jour du mois choisi. P>
Ils ne choisissent pas la date de cycle = Compte de date créé
Eh bien, la même chose, faites-le le jour où ils ont créé le compte ou le dernier jour du mois si le mois en cours dispose de moins de jours que le jour du mois, ils ont créé le compte sur
OK, je crois que j'ai été totalement bool NeedToBill = ((DateTime.UTCNow â LastBillDate) >= 30 Days)
Êtes-vous sûr que cela fonctionne? Il me semble que vous allez déplacer la date de facturation ~ 5 jours par an, finalement surcharger vos clients (1 facture supplémentaire tous les 6 ans). Cela ressemble à une belle affaire pour une action en justice de classe si votre entreprise a suffisamment d'abonnés ...
DateTime.addmonths prend en compte des années de saut et des dates d'EOM différentes.