Added almost all D521-3

This commit is contained in:
Denis Merigoux 2020-04-11 21:23:52 +02:00
parent 1bce538066
commit 912ae4c75a
6 changed files with 117 additions and 17 deletions

View File

@ -251,6 +251,9 @@ let rec lex_code lexbuf =
| '*' ->
update_and_acc lexbuf;
MULT
| '%' ->
update_and_acc lexbuf;
PERCENT
| '/' ->
update_and_acc lexbuf;
DIV

View File

@ -39,7 +39,7 @@
%token ASSERTION FIXED BY YEAR
%token PLUS MINUS MULT DIV MATCH WITH VARIES_WITH
%token FOR ALL WE_HAVE INCREASING DECREASING
%token NOT BOOLEAN
%token NOT BOOLEAN PERCENT
%token FIELD FILLED IFF EURO NOT_EQUAL DEFINITION
%token STRUCT CONTENT IF THEN DEPENDS DECLARATION
%token CONTEXT INCLUDES ENUM ELSE DATE SUM
@ -90,6 +90,7 @@ num_literal:
literal:
| num_literal {}
| num_literal PERCENT {}
| num_literal EURO {}
| INT_LITERAL date_qualifier {}
| CONSTRUCTOR option(constructor_payload) {}

View File

@ -116,7 +116,7 @@
'name' : 'keyword.control.lawspec'
}
{
'match' : '\\b(champ\\s+d\'application|si\\s+et\\s+seulement\\s+si|dépend\\s+de|déclaration|inclus|collection|contenu|optionnel|structure|énumération|contexte|règle|sous condition|conséquence|rempli|égal\\s+à|assertion|définition)\\b'
'match' : '\\b(champ\\s+d\'application|si\\s+et\\s+seulement\\s+si|dépend\\s+de|déclaration|inclus|collection|contenu|optionnel|structure|énumération|contexte|règle|sous condition|conséquence|sinon|rempli|égal\\s+à|assertion|définition)\\b'
'name' : 'keyword.lawspec'
}
{
@ -132,11 +132,11 @@
'name' : 'punctuation.lawspec'
}
{
'match' : '(\\+|\\-|\\*|/|\\!|ou|et|=|>|<)'
'match' : '(\\+|\\-|\\*|/|\\!|ou|et|=|>|<|\\x{20ac}|%)'
'name' : 'keyword.operator.lawspec'
}
{
'match' : '\\b(entier|booléen|date|montant|décimal|décret|loi|an|mois|jour|\\x{20ac}|nombre|date_aujourd_hui|somme)\\b'
'match' : '\\b(entier|booléen|date|montant|décimal|décret|loi|an|mois|jour|nombre|date_aujourd_hui|somme)\\b'
'name' : 'support.type.lawspec'
}
{

View File

@ -205,7 +205,7 @@ code : context {
}
: pattern {
regex \= \b(champ\s+d'application|si\s+et\s+seulement\s+si|dépend\s+de|déclaration|inclus|collection|contenu|optionnel|structure|énumération|contexte|règle|sous condition|conséquence|rempli|égal\s+à|assertion|définition)\b
regex \= \b(champ\s+d'application|si\s+et\s+seulement\s+si|dépend\s+de|déclaration|inclus|collection|contenu|optionnel|structure|énumération|contexte|règle|sous condition|conséquence|sinon|rempli|égal\s+à|assertion|définition)\b
styles [] = .keyword_rule ;
}
@ -225,12 +225,12 @@ code : context {
}
: pattern {
regex \= (\+|\-|\*|/|\!|ou|et|=|>|<)
regex \= (\+|\-|\*|/|\!|ou|et|=|>|<|\u20ac|%)
styles [] = .operator;
}
: pattern {
regex \= \b(entier|booléen|date|montant|décimal|décret|loi|an|mois|jour|\u20ac|nombre|somme|date_aujourd_hui)\b
regex \= \b(entier|booléen|date|montant|décimal|décret|loi|an|mois|jour|nombre|somme|date_aujourd_hui)\b
styles [] = .primitive;
}

View File

@ -25,12 +25,12 @@ class LawspecLexer(RegexLexer):
(u'(contexte)(\\s+)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)', bygroups(Keyword.Declaration, String, Name.Variable)),
(u'(donn\xe9e|condition)(\\s+)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)', bygroups(Keyword.Declaration, String, Text)),
(u'\\b(selon|sous\\s+forme|fix\xe9\\s+par|d\xe9croissante|croissante|varie\\s+avec|on\\s+a|dans|tel\\s+que|pour|tout|existe|de)\\b', bygroups(Keyword)),
(u'\\b(champ\\s+d\'application|si\\s+et\\s+seulement\\s+si|d\xe9pend\\s+de|d\xe9claration|inclus|collection|contenu|optionnel|structure|\xe9num\xe9ration|contexte|r\xe8gle|sous condition|cons\xe9quence|rempli|\xe9gal\\s+\xe0|assertion|d\xe9finition)\\b', bygroups(Keyword.Declaration)),
(u'\\b(champ\\s+d\'application|si\\s+et\\s+seulement\\s+si|d\xe9pend\\s+de|d\xe9claration|inclus|collection|contenu|optionnel|structure|\xe9num\xe9ration|contexte|r\xe8gle|sous condition|cons\xe9quence|sinon|rempli|\xe9gal\\s+\xe0|assertion|d\xe9finition)\\b', bygroups(Keyword.Declaration)),
(u'\\b(vrai|faux)\\b', bygroups(Keyword.Constant)),
(u'\\b([0-9]+(\\.[0.9]*|))\\b', bygroups(Number.Integer)),
(u'(\\-\\-|\\;|\\.|\\,|\\:|\\(|\\))', bygroups(Operator)),
(u'(\\+|\\-|\\*|/|\\!|ou|et|=|>|<)', bygroups(Operator)),
(u'\\b(entier|bool\xe9en|date|d\xe9cimal|montant|d\xe9cret|loi|an|mois|jour|\u20ac|nombre|date_aujourd_hui|somme)\\b', bygroups(Keyword.Type)),
(u'(\\+|\\-|\\*|/|\\!|ou|et|=|>|<|\u20ac|%)', bygroups(Operator)),
(u'\\b(entier|bool\xe9en|date|d\xe9cimal|montant|d\xe9cret|loi|an|mois|jour|nombre|date_aujourd_hui|somme)\\b', bygroups(Keyword.Type)),
(u'\\b([A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)(\\.)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)\\b', bygroups(Name.Class, Operator, Name.Variable)),
(u'\\b([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)(\\.)([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\'\\.]*)\\b', bygroups(Name.Variable, Operator, Text)),
(u'\\b([a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7][a-z\xe9\xe8\xe0\xe2\xf9\xee\xea\u0153\xe7A-Z\xc9\xc8\xc0\xc2\xd9\xce\xca\u0152\xc70-9_\\\']*)\\b', bygroups(Name.Variable)),

View File

@ -2,7 +2,7 @@
/*
déclaration structure Personne :
# Pas de champs
# Pas de données
déclaration structure ParentsGardeAlternée :
donnée parent1 contenu Personne
@ -132,8 +132,11 @@ déclaration structure L521_3 :
dépend de Enfant
donnée majorations_allocations_familiales contenu montant
déclaration structure L551_1 :
donnée base_mensuelle_prestations_familiales contenu montant
déclaration structure R521_3 :
donnée allocations_familiales_total_enfants_à_charge contenu montant
donnée allocations_familiales_avec_garde_alternée contenu montant
donnée rapport_enfants_total_moyen contenu décimal
donnée nombre_total_enfants contenu entier
donnée nombre_moyen_enfants contenu décimal
@ -143,6 +146,14 @@ déclaration structure R521_4 :
contenu montant
dépend de Enfant
déclaration structure D521_1 :
donnée montant_deuxieme_enfant contenu montant
donnée montant_troisième_enfant_et_plus contenu montant
déclaration structure D521_3 :
donnée plafond_I contenu montant
donnée plafond_II contenu montant
déclaration champ d'application CalculPrestationsFamiliales :
# Les règles déclarées dans PrestationsFamiliales pourront utiliser
# ménage et l512_3 et leur données associées
@ -158,6 +169,11 @@ déclaration champ d'application CalculAllocationsFamiliales :
contexte l521_1 structure L521_1
contexte l521_2 structure L521_2
contexte l521_3 structure L521_3
contexte l551_1 structure L551_1
contexte r521_3 structure R521_4
contexte r521_4 structure R521_4
contexte d521_1 structure D521_1
contexte d521_3 structure D521_3
inclus champ d'application CalculPrestationsFamiliales contexte
AllocationsFamiliales.ménage = PrestationsFamiliales.ménage
# AllocationsFamiliales est un cas particulier de PrestationsFamiliales,
@ -420,6 +436,13 @@ champ d'application CalculAllocationsFamiliales :
rempli
*/
@Article L.551-1@
Le montant des prestations familiales est déterminé d'après des bases mensuelles de calcul revalorisées au 1er avril de chaque année par application du coefficient mentionné à l'article L. 161-25.
/*
# Voir déclaration structure L551_1 dans les métadonnées. Idem que L521-1,
# on ne formalise pas ici l'évolution de la BAMF
*/
@Article R521-1@ L'âge mentionné au premier alinéa de l'article L. 521-3 à partir duquel les enfants ouvrent droit à la majoration des allocations familiales est fixé à 14 ans.
/*
champ d'application CalculAllocationsFamiliales :
@ -483,8 +506,8 @@ Sous réserve de l'article R. 521-4, dans les situations visées aux 1° et 2°
/*
champ d'application CalculAllocationsFamiliales :
définition l521_1.allocation_familiales égal à
r521_3.allocations_familiales_total_enfants_à_charge *
définition r521_3.allocations_familiales_avec_garde_alternée égal à
l521_1.allocation_familiales *
r521_3.rapport_enfants_total_moyen
définition r521_3.rapport_enfants_total_moyen égal à
@ -537,19 +560,92 @@ I.- Pour l'application de l'article L. 521-1, le montant des allocations familia
1° Lorsque le ménage ou la personne a disposé d'un montant de ressources inférieur ou égal au plafond défini au I de l'article D. 521-3, les taux servant au calcul des allocations familiales sont fixés, en pourcentage de la base mensuelle prévue à l'article L. 551-1, à :
a) 32 % pour le deuxième enfant à charge ;
/*
champ d'application CalculAllocationsFamiliales :
définition d521_1.montant_deuxieme_enfant égal à
sous condition nombre de ménage.enfants >= 2
conséquence l551_1.base_mensuelle_prestations_familiales * 32 %
sinon 0 €
*/
b) 41 % pour le troisième enfant à charge et chacun des suivants.
/*
champ d'application CalculAllocationsFamiliales :
définition d521_1.montant_troisième_enfant_et_plus égal à
sous condition nombre de ménage.enfants >= 3
conséquence l551_1.base_mensuelle_prestations_familiales * 41 % * (
(nombre de ménage.enfants) - 2
) sinon 0 €
*/
La majoration pour âge est fixée à 16 % de la base mensuelle de calcul des prestations familiales ;
/*
champ d'application CalculAllocationsFamiliales :
définition d521_1.majoration_pour_âge égal à
l551_1.base_mensuelle_prestations_familiales * 16 %
*/
2° Lorsque le ménage ou la personne a disposé d'un montant de ressources supérieur au plafond défini au I de l'article D. 521-3 et inférieur ou égal à celui défini au II du même article, les taux servant au calcul des allocations familiales sont fixés, en pourcentage de la base mensuelle prévue à l'article L. 551-1, à :
a) 16 % pour le deuxième enfant à charge ;
/*
champ d'application CalculAllocationsFamiliales :
définition d521_1.montant_deuxieme_enfant sous condition
(l521_1.ressources_ménage > d521_3.plafond_I) et
(l521_1.ressources_ménage <= d521_3.plafond_II)
conséquence égal à
sous condition nombre de ménage.enfants >= 2
conséquence l551_1.base_mensuelle_prestations_familiales * 32 %
sinon 0 €
*/
b) 20,5 % pour le troisième enfant à charge et chacun des suivants.
/*
champ d'application CalculAllocationsFamiliales :
définition d521_1.montant_troisième_enfant_et_plus sous condition
(l521_1.ressources_ménage > d521_3.plafond_I) et
(l521_1.ressources_ménage <= d521_3.plafond_II)
conséquence égal à
sous condition nombre de ménage.enfants >= 3
conséquence l551_1.base_mensuelle_prestations_familiales * 20.5 % * (
(nombre de ménage.enfants) - 2
) sinon 0 €
*/
La majoration pour âge est fixée à 8 % de la base mensuelle de calcul des prestations familiales ;
/*
champ d'application CalculAllocationsFamiliales :
définition d521_1.majoration_pour_âge sous condition
(l521_1.ressources_ménage > d521_3.plafond_I) et
(l521_1.ressources_ménage <= d521_3.plafond_II)
conséquence égal à
l551_1.base_mensuelle_prestations_familiales * 8 %
*/
3° Lorsque le ménage ou la personne a disposé d'un montant de ressources supérieur au plafond défini au II de l'article D. 521-3, les taux servant au calcul des allocations familiales sont fixés, en pourcentage de la base mensuelle prévue à l'article L. 551-1, à :
a) 8 % pour le deuxième enfant à charge ;
/*
champ d'application CalculAllocationsFamiliales :
définition d521_1.montant_deuxieme_enfant sous condition
(l521_1.ressources_ménage > d521_3.plafond_II)
conséquence égal à
sous condition nombre de ménage.enfants >= 2
conséquence l551_1.base_mensuelle_prestations_familiales * 8 %
sinon 0 €
*/
b) 10,25 % pour le troisième enfant à charge et chacun des suivants.
/*
champ d'application CalculAllocationsFamiliales :
définition d521_1.montant_troisième_enfant_et_plus sous condition
(l521_1.ressources_ménage > d521_3.plafond_II)
conséquence égal à
sous condition nombre de ménage.enfants >= 3
conséquence l551_1.base_mensuelle_prestations_familiales * 10.25 % * (
(nombre de ménage.enfants) - 2
) sinon 0 €
*/
La majoration pour âge est fixée à 4 % de la base mensuelle de calcul des prestations familiales.
/*
champ d'application CalculAllocationsFamiliales :
définition d521_1.majoration_pour_âge sous condition
(l521_1.ressources_ménage > d521_3.plafond_II)
conséquence égal à
l551_1.base_mensuelle_prestations_familiales * 4 %
*/
II.- En application du sixième alinéa de l'article L. 521-1, le montant mensuel des allocations familiales et, le cas échéant, de la majoration pour âge est majoré d'un complément dégressif, lorsque les ressources annuelles du ménage ou de la personne dépassent l'un des plafonds défini au I ou au II de l'article D. 521-3 d'une somme inférieure à douze fois le montant mensuel des allocations familiales augmenté, le cas échéant, de la ou des majorations pour âge.