Calcul d'une traite (échéance)

Contenu du snippet

Calcul de l'échéance de réglement d'une traite en fonction d'une date de départ, d'un délai de réglement et du jour de réglement (jour à 0 pour fin de mois).

Exemple :
Traite à 90 jours fin de mois à partir de aujourd'hui (05-09-2007) : TRAITE au 31/12/2007

Source / Exemple :


<?PHP
function CalculTraite($DateDepart, $DelaisReglement, $JourReglement){
// Calcule la date d'une traite (échéance)
// Ex : $TimeStamp = CalculTraite('01-08-2007', 90, 15);
//      $Date      = date("d/m/Y", $TimeStamp);

  // Date de départ
  $TableDate = explode('-', $DateDepart);
  $Jour      = $TableDate[0];
  $Mois      = $TableDate[1];
  $Annee     = $TableDate[2];

  // Nb de jour a avancer, qu'on calcule plutôt en mois si on peux
  if (($DelaisReglement % 30 == 0) and $DelaisReglement>=30){
    $NbMois          = $DelaisReglement / 30;
    $DelaisReglement = 0;
  }
  else
    $NbMois = 0;

  // On controle le Nb de jour maxi dans le mois
  $NbJourMois = date("t", mktime(0, 0, 0, $Mois+$NbMois, $Jour+$DelaisReglement, $Annee));
  if ($JourReglement>$NbJourMois or empty($JourReglement))
    $JourReglement = $NbJourMois;

  $d = 0;
  // On avance la date jusqu'au bon jour (exemple : le 15) en plus du délais (30J, 60J...)
  while (date("d", $TimeStamp) != $JourReglement){
  	$TimeStamp  = mktime(0, 0, 0, $Mois+$NbMois, $Jour+$DelaisReglement+$d, $Annee);

  	// On re-controle le Nb de jour maxi dans le mois
  	$NbJourMois = date("t", $TimeStamp);
    if ($JourReglement>$NbJourMois)
      $JourReglement = $NbJourMois;

  	$d++;
  	if ($d > 31) break; // Sécurité contre une boucle infinie
  }

  return $TimeStamp;
}

// Exemple :
$TimeStamp = CalculTraite('01-08-2007', 90, 15);
echo date("d/m/Y", $TimeStamp);
?>

Conclusion :


Ma 1ère source, j'attend vos avis ;)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.