Documentation ¶
Overview ¶
Ensemble de fonctions utilitaires pour manipuler des dates et âges
Le type AnneesMoisJours permet d'exprimer des dates et âges en Années, Mois et Jour, Le type AnneesMoisJours peut être converti en type time.Time (UTC) et vice versa. Enfin, il est possible d'obtenir une durée en AnneesMoisJours à partir de la différence entre 2 dates.
Fonctions de conversion d'une chaîne de caractères en date au format JJ/MM/AAAA
Regroupe les utilitaires concernant la décôte voir retraite_personnelle_pourcentage_minoration_applique_taux_plein_bar
Age légal de départ à la retraite (as of January 2016)
Ce service vous permet de connaitre votre âge légal de départ à la retraite et vous précise : - votre âge légal de départ à la retraite - le point de départ possible de votre retraite - la durée de cotisation pour obtenir une retraite à taux plein - l'âge et la date auxquels vous obtiendrez automatiquement une retraite à taux plein
Référentiel des dates légales de départ à la retraite en fonction des années de naissance ¶
Regroupe les utilitaires concernant la surcote ¶
Référentiel des trimestres à cotiser en fonction des années de naissance
Index ¶
- Constants
- Variables
- func AnneesMoisJourToTime(amj AnneesMoisJours) (time.Time, error)
- func CalculerConditionsDepart(naissanceJJMMAAAA string, trimestresAcquis int, annéeDuRelevé int, ...) (CalculDépart, DepartImpossible, error)
- func CalculerSurcotePourTrimestresSupplementaires(trimestresApresTauxPlein int) float32
- func DatePlusAge(date time.Time, age AnneesMoisJours) time.Time
- func NombreDeTrimestresEntre(depuis time.Time, jusque time.Time) (int, error)
- func RechercherTauxPlein(naissance time.Time) (int, error)
- func StringToTime(dateJJMMAAAA string) (time.Time, error)
- func SurcotePourTrimestreSupplementaire() float32
- func TimeToString(date time.Time) string
- func VérifierRelevé(annéeDuRelevé int) (time.Time, error)
- type AnneesMoisJours
- type CalculDecote
- type CalculDépart
- type DepartImpossible
- type EntreeReferentiel
- type InfosDepartEnRetraite
- type PeriodeAgeLegal
- type ReferentielPeriodeLegales
- type ReferentielTrimestres
- type TauxDecote
- type TrimestresParPeriode
Constants ¶
const ( TAUX_PLEIN tauxRetraite = "Taux Plein" TAUX_DECOTE tauxRetraite = "Décote" TAUX_SURCOTE tauxRetraite = "Surcote" )
const ( TROP_TOT departImpossibleCode = "Trop tôt" TRIMESTRES_INSUFFISANTS departImpossibleCode = "Trimestres insuffisants" )
const ANNEE_MAX = 2100 // arbitrary limit, because we need one
const ANNEE_MIN = 0
const ANNEE_NAISSANCE_MIN = 1900
const DECOTE_MAX_TRIMESTRES = 20
La décote est viagère, c'est-à-dire appliquée jusqu'au décès. Elle ne peut excéder 20 trimestres, contrairement à la surcote qui n'est pas plafonnée. Extrait de http://www.la-retraite-en-clair.fr/cid3196014/ce-faut-savoir-sur-decote.html
const JJMMAAADateFormat = "02/01/2006"
const NB_TRIMESTRES_MIN_SOUS_TAUX_PLEIN = 20
Variables ¶
var ANNEE_NAISSANCE_MAX = time.Now().Year()
var ErrAppelFonctionIncorrect = errors.New("paramètres d'invocation incorrects")
var ErrDateFormatInvalide = errors.New("le format de date n'est pas valide")
var ErrDateLimites = errors.New("la date n'est pas entre le 01/01/1900 et aujourd'hui")
var ErrDateRelevé = errors.New("Le date du relevé est incorrecte, ou date de plus de 20 ans")
var ErrDateVide = errors.New("la date n'est pas renseignée")
var ErrPeriodeNonTrouvee = errors.New("pas de période pour la date spécifiée")
var ErrTrimestresManquantsHorsLimites = fmt.Errorf("Les trimestres manquants doivent se situer entre 0 et 20")
Functions ¶
func AnneesMoisJourToTime ¶
func AnneesMoisJourToTime(amj AnneesMoisJours) (time.Time, error)
Crée un nouvel objet de type time.Time pour l' AnneesMoisJours spécifié
func CalculerConditionsDepart ¶
func CalculerConditionsDepart(naissanceJJMMAAAA string, trimestresAcquis int, annéeDuRelevé int, departJJMMAAA string) (CalculDépart, DepartImpossible, error)
Calcule les conditions d'un départ en retraite à la date spécifiée La date de naissance est au format DD/MM/AAAA. Le nombre de trimestres tels qui apparaissent sur le relevé de situtation individuelle. La date du relevé de situation individuelle (ligne "Salarié du régime général de sécurité sociale (CNAV) - ANNEE) Ce calcul est théorique dans la mesure où il suppose que vous restiez en pleine activité depuis votre dernier relevé et jusqu'à votre départ en retraite
Les résultats sont :
- soit le départ n'est pas possible à la date indiquée, avec le motif (manque de trimestre ou age insuffisant)
- si le départ est possible, les conditions sont détaillées (le taux de la pension)
func CalculerSurcotePourTrimestresSupplementaires ¶
Retourne le taux de la pension pour un nombre de trimestres cotisés au delà du nombre requis pour un taux plein
func DatePlusAge ¶
func DatePlusAge(date time.Time, age AnneesMoisJours) time.Time
Calcule une nouvelle date en ajoutant un type Time et un type AnneesMoisHomme
func NombreDeTrimestresEntre ¶
La fonction CalculerTrimestres retourne le nombre de trimestres entre 2 dates
func RechercherTauxPlein ¶
Cette fonction retourne le nombre de trimestres à cotiser pour la date de naissance spécifiée Le référentiel de trimestres par défaut est interrogé.
func StringToTime ¶
La fonction StringToTime convertit une chaîne de caractères au format JJ/MM/AAAA en date de type time.Time
func SurcotePourTrimestreSupplementaire ¶
func SurcotePourTrimestreSupplementaire() float32
Retourne le taux de la surcote par trimestre supplémentaire
func TimeToString ¶
La fonction TimeToString convertit un type Time en chaîne au format JJ/MM/AAAA
Types ¶
type AnneesMoisJours ¶
type AnneesMoisJours struct { Annees int `json:"annees,required"` // nombre d'années Mois int `json:"mois,omitempty"` // nombre de mois Jours int `json:"jours,omitempty"` // nombre de jours }
Le type AnneesMois représente une date sous la forme d'un nombre d'années, de mois et de jour Exemple : 62 ans et 7 mois
func CalculerDurée ¶
Cette fonction calcule une durée au format AnneesMoisJour, en tenant compte du calendrier réel pour les dates comparées
func CalculerDuréeAlt ¶
Implementation alternative basée sur time.AddDate() avec arguments négatifs Les premiers tests semblent retourner des résultats différents [TODO] A creuser
func TimeToAnneesMoisJour ¶
func TimeToAnneesMoisJour(t time.Time) (AnneesMoisJours, error)
Crée un nouvel objet de type AnneesMoisJours pour la date spécifiée
func (AnneesMoisJours) AgeEnAnnees ¶
func (amj AnneesMoisJours) AgeEnAnnees() string
Retourne la valeur en années exemple : 44 ans
func (AnneesMoisJours) AgeEnAnneesFloat ¶
func (amj AnneesMoisJours) AgeEnAnneesFloat() float32
Retourne la valeur en années
func (AnneesMoisJours) AgeEnAnneesMois ¶
func (amj AnneesMoisJours) AgeEnAnneesMois() string
Retourne la valeur en années et en mois exmple : 44 ans et 2 mois
func (AnneesMoisJours) AgeEnAnneesVirgule ¶
func (amj AnneesMoisJours) AgeEnAnneesVirgule() string
Retourne la valeur en années exemple : 44,3 ans
func (AnneesMoisJours) AgeEnMoisFloat ¶
func (amj AnneesMoisJours) AgeEnMoisFloat() float32
Retourne la valeur en mois
type CalculDecote ¶
type CalculDecote struct { Decote *TauxDecote // référence vers le taux de decote utilisé TauxPension float32 // le taux de la pension suite à la décote, par exemple 45% par rapport à un taux plein à 50% DecoteTotale float32 // la decote totale appliquée au vu du nombre de trimestres manquants TrimestresRetenus int // le nombre de trimestres retenus pour le calcul Correction bool // Indique si un plafond a été atteint }
Le type CalculDecote est utilisé pour retourné le résultat du calcul d'une pension de retraite en fonction d'un nombre de trimestres manquants
func CalculerDécotePourTrimestresManquants ¶
func CalculerDécotePourTrimestresManquants(trimestres int, naissanceJJMMAAAA string) (CalculDecote, error)
Calcule la décôte selon le nombre de trimestres manquants et en fonction de l'année de naissance La date de naissance est au format JJ/MM/AAAA, de celle-ci dépend le coefficient de décôte Du nombre de trimestres manquants pour un taux plein dépend la valeur totale de la décote Retourne le taux de la pension, ainsi que la décote totale. Si une borne était dépassée, le nombre de trimestres retenu, et un bool précise si une correction sur le nombre de trimestres a été opérée. Si la date de naissance n'est pas précisée, le référentiel après 1952 s'applique Si le nombre de trimestres est inférieure à 1, une valeur de 0 trimestres est retournée Si le nombre de trimestres est supérieure à 20, une valeur pour 20 trimestres est retournée
type CalculDépart ¶
type CalculDépart struct { Age AnneesMoisJours // âge au moment du départ Date time.Time // date en JJ/MM/AAAA TrimestresCotisés int // nombre de trimestres cotisés au final entre la date de début d'activité et le moment du départ TrimestresRestants int // nombre de trimestres restants à cotiser depuis le dernier relevé d'activité Taux tauxRetraite // résultat du calcul du taux pour la date de départ Pension float32 // coefficient de la pension, ex : 50% pour un taux plein, ou bien après application de la décote ou surcote }
func CalculerDépartTauxPlein ¶
func CalculerDépartTauxPlein(dateJJMMAAAA string, trimestresAcquis int, annéeDuRelevé int) (CalculDépart, error)
Calcule les conditions de départ en retraite à taux plein, à partir de l'année de naissance, et du nombre de trimestres acquis à la fin d'année précisée dans le relevé de situation individuelle. La date de naissance est au format DD/MM/AAAA. Le nombre de trimestres tels qui apparaissent sur le relevé de situtation individuelle. La date du relevé de situation individuelle (ligne "Salarié du régime général de sécurité sociale (CNAV) - ANNEE) Ce calcul est théorique dans la mesure où il repose sur plusieurs hypothèses :
- que vous soyez en pleine activité depuis votre dernier relevé et jusqu'à votre départ en retraite
- que vous ayez atteint l'âge minimal de départ en retraite pour votre année de naissance (voir fonction
Par ailleurs, vous pourrez partir à taux plein si l'âge retourné par cette fonction est supérieur à l'âge automatique à taux plein défini pour votre année de naissance
type DepartImpossible ¶
type DepartImpossible struct { Code departImpossibleCode Motif string }
type EntreeReferentiel ¶
type EntreeReferentiel struct { NaissanceApres string // date de naissance à partir de laquelle s'applique la législation Legislation PeriodeAgeLegal }
Le type EntreeReferentiel est utilisé pour exposer l'ensemble du référentiel des périodes de départ à la retraite sous forme d'API
type InfosDepartEnRetraite ¶
type InfosDepartEnRetraite struct { TrimestresMinimum int `json:"nbTrimestresMin"` // nombre de trimestres cotisés au minimum afin de pouvoir partir en retraitei TrimestresTauxPlein int `json:"nbTrimestresTauxPlein"` // nombre de trimestres afin de disposer de sa retraite à taux plein AgeDépartMin AnneesMoisJours `json:"ageDepartMinimum"` // âge à partir duquel il est possible de percevoir une retraite, mais elle ne sera pas à taux plein si le nombre de trimestres cotisés n'est pas celui requis DateDépartMin time.Time `json:"dateDepartMinimum"` // date à partir de laquelle il est possible de percevoir une retraite AgeTauxPleinAuto AnneesMoisJours `json:"ageTauxPleinAutomatique"` // âge à partir duquel il est possible de percevoir une retraite à taux plein même si le nombre de trimestres cotisés n'est pas suffisant DateTauxPleinAuto time.Time `json:"dateTauxPleinAutomatique"` // date à partir de laquelle il est possible de percevoir une retraite à taux plein même si le nombre de trimestres cotisés n'est pas suffisant AgeDépartExigible AnneesMoisJours `json:"ageDepartExigible"` // âge à partir duquel l'employeur peut exiger un départ en retraite de l'employé DateDépartExigible time.Time `json:"dateDepartExigible"` // date à partir de laquelle l'employeur peut exiger un départ en retraite de l'employé }
La structure InfosDepartLegal regroupe les données légales relatives au départ à la retraite. Cette structure est calculée à partir d'une date de naissance, voir la fonction CalculerInfosLégales
func CalculerInfosLégales ¶
func CalculerInfosLégales(dateJJMMAAAA string) (InfosDepartEnRetraite, error)
Calcule les informations de départ légal à la retraite, à partir d'une date de naissance au format JJ/MM/AAAA En cas d'erreur, retourne l'erreur ainsi qu'une structure InfosDepartLegal vide
type PeriodeAgeLegal ¶
type PeriodeAgeLegal struct { Depuis time.Time // date de naissance à partir de laquelle les âges de départs en retraite s'appliquent, vide s'il n'y a pas de borne inférieure Jusque time.Time // date de naissance jusque laquelle les âges de départs en retraite s'appliquent, vide s'il n'y a pas de borne supérieure AgeDepartMin AnneesMoisJours // age minimal à partir duquel on peut percevoir sa retraite AgeTauxPleinAuto AnneesMoisJours // age à partir duquel on percevra sa retraite à taux plein même si le nombre de trimestre cotisés n'est pas suffisant AgeDepartExigible AnneesMoisJours // age à partir duquel un employeur peut exiger qu'un salarié prenne sa retraite même sans son consentement }
Le type PeriodeDepartLegal représente l'age minimal de départ à la retraite. Ce type est utilisé pour associer une période légale à une durée de naissance. Exemple : pour les personnes nées à partir du 01/01/1954, 61 ans et 7 mois pour l'âge minimum et 66 ans et 7 mois pour une retraite à taux plein
func RechercherAgeLegal ¶
func RechercherAgeLegal(néLe time.Time) (PeriodeAgeLegal, error)
Retourne les périodes de départ en retraite pour une personne née à la date spécifiée
type ReferentielPeriodeLegales ¶
type ReferentielPeriodeLegales struct {
// contains filtered or unexported fields
}
Le type ReferentielPeriodeLegales regroupe les âges de départ en retraite. Ce type permet d'abriter de futures données. Par défaut, le référentiel de 2010 est chargé.
type ReferentielTrimestres ¶
type ReferentielTrimestres struct {
// contains filtered or unexported fields
}
Le type ReferentielTrimestres regroupe les âges de départ en retraite. Ce type permet d'abriter de futures données. Par défaut, le référentiel de 2010 est chargé.
type TauxDecote ¶
type TauxDecote struct { Nom string // nom commun du tableau de taux Depuis time.Time // date de naissance à partir de laquelle ces taux s'appliquent Jusque time.Time // date de naissance jusque laquelle ces taux s'appliquent Taux [21]float32 // pourcentages de décotes en fonction des trimestres manquants Minoration float32 // le coefficient de minoration appliqué au taux plein (50 %) par trimestre manquant Diminution float32 // la diminution du taux par trimestre manquant }
var Default TauxDecote // référentiel post 1952
type TrimestresParPeriode ¶
type TrimestresParPeriode struct { AnneeDebut int // date de naissance inférieure de la période (incluse) AnneeFin int // date de naissance supérieure de la période (excluse) Trimestres int // nombre de trimestres à cotiser sur la période }
Le type TrimestresParPeriode représente le nombre de trimestres à cotiser sur une période d'années de naissance Les bornes sont ANNEE_MIN et ANNEE_MAX