depart

package
v0.0.0-...-00c01f5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 6, 2016 License: MIT Imports: 5 Imported by: 1

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

View Source
const (
	TAUX_PLEIN   tauxRetraite = "Taux Plein"
	TAUX_DECOTE  tauxRetraite = "Décote"
	TAUX_SURCOTE tauxRetraite = "Surcote"
)
View Source
const (
	TROP_TOT                departImpossibleCode = "Trop tôt"
	TRIMESTRES_INSUFFISANTS departImpossibleCode = "Trimestres insuffisants"
)
View Source
const ANNEE_MAX = 2100 // arbitrary limit, because we need one
View Source
const ANNEE_MIN = 0
View Source
const ANNEE_NAISSANCE_MIN = 1900
View Source
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

View Source
const JJMMAAADateFormat = "02/01/2006"
View Source
const NB_TRIMESTRES_MIN_SOUS_TAUX_PLEIN = 20

Variables

View Source
var ANNEE_NAISSANCE_MAX = time.Now().Year()
View Source
var ErrAppelFonctionIncorrect = errors.New("paramètres d'invocation incorrects")
View Source
var ErrDateFormatInvalide = errors.New("le format de date n'est pas valide")
View Source
var ErrDateLimites = errors.New("la date n'est pas entre le 01/01/1900 et aujourd'hui")
View Source
var ErrDateRelevé = errors.New("Le date du relevé est incorrecte, ou date de plus de 20 ans")
View Source
var ErrDateVide = errors.New("la date n'est pas renseignée")
View Source
var ErrPeriodeNonTrouvee = errors.New("pas de période pour la date spécifiée")
View Source
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

func CalculerSurcotePourTrimestresSupplementaires(trimestresApresTauxPlein int) float32

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

func NombreDeTrimestresEntre(depuis time.Time, jusque time.Time) (int, error)

La fonction CalculerTrimestres retourne le nombre de trimestres entre 2 dates

func RechercherTauxPlein

func RechercherTauxPlein(naissance time.Time) (int, error)

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

func StringToTime(dateJJMMAAAA string) (time.Time, error)

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

func TimeToString(date time.Time) string

La fonction TimeToString convertit un type Time en chaîne au format JJ/MM/AAAA

func VérifierRelevé

func VérifierRelevé(annéeDuRelevé int) (time.Time, error)

Vérifie la date du relevé, et retourne la date à partir de laquelle les nouvelles cotisations débuteront

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

func CalculerDurée(depuis time.Time, jusque time.Time) (AnneesMoisJours, error)

Cette fonction calcule une durée au format AnneesMoisJour, en tenant compte du calendrier réel pour les dates comparées

func CalculerDuréeAlt

func CalculerDuréeAlt(depuis time.Time, jusque time.Time) (AnneesMoisJours, error)

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

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL