Skip to content

Commit

Permalink
Intégration des domaines de règles dans le langage M (#221)
Browse files Browse the repository at this point in the history
  • Loading branch information
david-michel1 authored Aug 17, 2023
2 parents e5a39f2 + 86273f1 commit 98b5ace
Show file tree
Hide file tree
Showing 66 changed files with 2,281 additions and 1,122 deletions.
17 changes: 10 additions & 7 deletions mpp_specs/2018_6_7.mpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@ compute_article1731bis():
PREM8_11 = 1

compute_benefits():
if exists_deposit_defined_variables() or exists_taxbenefit_ceiled_variables():
# do not exist in the 2018 version: 7MA,7KM,7KG
# do not exist in the 2019 version: 7QD,7QB,7QC,7CN,7QE,7QF,7QG,7QH,7LS
# do not exist in the 2020 version: 7QK,7CM,7QI,7QJ,7QL
if exists_attribute_with(acompte, 1) or exists_aliases(4BA,4BY,4BB,4BC,7CL,7LG,7QM,2DC,7QP,7QS,7QN,7QO):
V_INDTEO = 1
V_CALCUL_NAPS = 1
partition with var_is_taxbenefit:
IAD11, INE, IRE <- call_m(primitif)
partition with avfisc == 1:
IAD11, INE, IRE <- call_m_rules(primitive)
V_CALCUL_NAPS = 0
iad11 = cast(IAD11)
ire = cast(IRE)
Expand All @@ -26,7 +29,7 @@ compute_double_liquidation3(outputs):
V_DIFTEOREEL = 0
PREM8_11 = 0
compute_article1731bis()
calcul_avfisc = exists_taxbenefit_defined_variables()
calcul_avfisc = exists_attribute_with(avfisc, 1)
v_8ZG = 8ZG
if present(8ZG) and calcul_avfisc:
del 8ZG
Expand All @@ -41,9 +44,9 @@ compute_double_liquidation3(outputs):
8ZG = v_8ZG
V_ACO_MTAP = 0
V_NEGACO = 0
outputs <- call_m(isf)
outputs <- call_m(primitif)
outputs <- call_m(taux)
outputs <- call_m_rules(isf)
outputs <- call_m_rules(primitive)
outputs <- call_m_rules(taux)

compute_double_liquidation_exit_taxe(outputs):
annee = 2018 # FIXME
Expand Down
17 changes: 10 additions & 7 deletions mpp_specs/2019_8_0.mpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,14 @@ compute_article1731bis():
PREM8_11 = 1

compute_benefits():
if exists_deposit_defined_variables() or exists_taxbenefit_ceiled_variables():
partition with var_is_taxbenefit:
# do not exist in the 2018 version: 7MA,7KM,7KG
# do not exist in the 2019 version: 7QD,7QB,7QC,7CN,7QE,7QF,7QG,7QH,7LS
# do not exist in the 2020 version: 7QK,7CM,7QI,7QJ,7QL
if exists_attribute_with(acompte, 1) or exists_aliases(4BA,4BY,4BB,4BC,7CL,7LG,7QM,2DC,7QP,7QS,7QN,7QO):
partition with avfisc == 1:
V_INDTEO = 1
V_CALCUL_NAPS = 1
IAD11, INE, IRE <- call_m(primitif)
IAD11, INE, IRE <- call_m_rules(primitive)
V_CALCUL_NAPS = 0
iad11 = cast(IAD11)
ire = cast(IRE)
Expand All @@ -26,7 +29,7 @@ compute_double_liquidation3(outputs):
V_DIFTEOREEL = 0
PREM8_11 = 0
compute_article1731bis()
calcul_avfisc = exists_taxbenefit_defined_variables()
calcul_avfisc = exists_attribute_with(avfisc, 1)
v_8ZG = 8ZG
if present(8ZG) and calcul_avfisc:
del 8ZG
Expand All @@ -41,9 +44,9 @@ compute_double_liquidation3(outputs):
8ZG = v_8ZG
V_ACO_MTAP = 0
V_NEGACO = 0
outputs <- call_m(isf)
outputs <- call_m(primitif)
outputs <- call_m(taux)
outputs <- call_m_rules(isf)
outputs <- call_m_rules(primitive)
outputs <- call_m_rules(taux)

compute_double_liquidation_exit_taxe(outputs):
annee = 2018 # FIXME
Expand Down
15 changes: 9 additions & 6 deletions mpp_specs/2020_6_5.mpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,20 @@ compute_article1731bis():
PREM8_11 = 1

calcul_primitif_isf(outputs):
outputs <- call_m(isf)
outputs <- call_m_rules(isf)

calcul_primitif(outputs):
outputs <- call_m(primitif)
outputs <- call_m_rules(primitive)

calcul_primitif_taux(outputs):
outputs <- call_m(taux)
outputs <- call_m_rules(taux)

compute_benefits():
if exists_deposit_defined_variables() or exists_taxbenefit_ceiled_variables():
partition with var_is_taxbenefit:
# do not exist in the 2018 version: 7MA,7KM,7KG
# do not exist in the 2019 version: 7QD,7QB,7QC,7CN,7QE,7QF,7QG,7QH,7LS
# do not exist in the 2020 version: 7QK,7CM,7QI,7QJ,7QL
if exists_attribute_with(acompte, 1) or exists_aliases(4BA,4BY,4BB,4BC,7CL,7LG,7QM,2DC,7QP,7QS,7QN,7QO):
partition with avfisc == 1:
V_INDTEO = 1
V_CALCUL_NAPS = 1
IAD11, INE, IRE <- calcul_primitif()
Expand All @@ -35,7 +38,7 @@ compute_double_liquidation3(outputs):
V_DIFTEOREEL = 0
PREM8_11 = 0
compute_article1731bis()
calcul_avfisc = exists_taxbenefit_defined_variables()
calcul_avfisc = exists_attribute_with(avfisc, 1)
v_8ZG = 8ZG
if present(8ZG) and calcul_avfisc:
del 8ZG
Expand Down
96 changes: 48 additions & 48 deletions mpp_specs/dgfip_base.mpp
Original file line number Diff line number Diff line change
@@ -1,156 +1,156 @@

calcul_primitif():
outputs <- call_m(primitif)
outputs <- call_m_rules(primitive)

calcul_primitif_isf():
outputs <- call_m(isf)
outputs <- call_m_rules(isf)

calcul_primitif_taux():
outputs <- call_m(taux)
outputs <- call_m_rules(taux)

calcul_correctif():
outputs <- call_m(corrective)
outputs <- call_m_rules(corrective)

sauve_base_1728():
X = X
# outputs <- call_m(base_1728)
# outputs <- call_m_rules(base_1728 corrective)

sauve_base_premier():
outputs <- call_m(base_premier)
outputs <- call_m_rules(base_premier corrective)

sauve_base_stratemajo():
outputs <- call_m(base_stratemajo)
outputs <- call_m_rules(base_stratemajo corrective)

sauve_base_anterieure():
outputs <- call_m(base_anterieure)
outputs <- call_m_rules(base_anterieure corrective)

sauve_base_anterieure_cor():
outputs <- call_m(base_anterieure_cor)
outputs <- call_m_rules(base_anterieure_cor corrective)

sauve_base_inr_tl():
outputs <- call_m(base_inr_tl)
outputs <- call_m_rules(base_inr_tl corrective)

sauve_base_inr_tl22():
outputs <- call_m(base_inr_tl22)
outputs <- call_m_rules(base_inr_tl22 corrective)

sauve_base_inr_tl24():
outputs <- call_m(base_inr_tl24)
outputs <- call_m_rules(base_inr_tl24 corrective)

sauve_base_inr_ntl():
outputs <- call_m(base_inr_ntl)
outputs <- call_m_rules(base_inr_ntl corrective)

sauve_base_inr_ntl22():
outputs <- call_m(base_inr_ntl22)
outputs <- call_m_rules(base_inr_ntl22 corrective)

sauve_base_inr_ntl24():
outputs <- call_m(base_inr_ntl24)
outputs <- call_m_rules(base_inr_ntl24 corrective)

sauve_base_inr_ref():
outputs <- call_m(base_inr_ref)
outputs <- call_m_rules(base_inr_ref corrective)

sauve_base_inr_r9901():
outputs <- call_m(base_inr_r9901)
outputs <- call_m_rules(base_inr_r9901 corrective)

sauve_base_inr_intertl():
outputs <- call_m(base_inr_intertl)
outputs <- call_m_rules(base_inr_intertl corrective)

sauve_base_inr_inter22():
outputs <- call_m(base_inr_inter22)
outputs <- call_m_rules(base_inr_inter22 corrective)

sauve_base_inr_cimr99():
outputs <- call_m(base_inr_cimr99)
outputs <- call_m_rules(base_inr_cimr99 corrective)

sauve_base_inr_cimr07():
outputs <- call_m(base_inr_cimr07)
outputs <- call_m_rules(base_inr_cimr07 corrective)

sauve_base_inr_cimr24():
outputs <- call_m(base_inr_cimr24)
outputs <- call_m_rules(base_inr_cimr24 corrective)

sauve_base_inr_tlcimr07():
outputs <- call_m(base_inr_tlcimr07)
outputs <- call_m_rules(base_inr_tlcimr07 corrective)

sauve_base_inr_tlcimr24():
outputs <- call_m(base_inr_tlcimr24)
outputs <- call_m_rules(base_inr_tlcimr24 corrective)

sauve_base_tlnunv():
X = X
# outputs <- call_m(base_tlnunv)
# outputs <- call_m_rules(base_tlnunv corrective)

sauve_base_tl():
outputs <- call_m(base_tl)
outputs <- call_m_rules(base_tl corrective)

sauve_base_tl_init():
outputs <- call_m(base_tl_init)
outputs <- call_m_rules(base_tl_init corrective)

sauve_base_tl_rect():
outputs <- call_m(base_tl_rect)
outputs <- call_m_rules(base_tl_rect corrective)

sauve_base_initial():
outputs <- call_m(base_INITIAL)
outputs <- call_m_rules(base_INITIAL corrective)

sauve_base_abat98():
outputs <- call_m(base_ABAT98)
outputs <- call_m_rules(base_ABAT98 corrective)

sauve_base_abat99():
outputs <- call_m(base_ABAT99)
outputs <- call_m_rules(base_ABAT99 corrective)

sauve_base_majo():
outputs <- call_m(base_MAJO)
outputs <- call_m_rules(base_MAJO corrective)

sauve_base_inr():
outputs <- call_m(base_INR)
outputs <- call_m_rules(base_INR corrective)

sauve_base_HR():
outputs <- call_m(base_HR)
outputs <- call_m_rules(base_HR corrective)

ENCH_TL():
outputs <- call_m(ENCH_TL)
outputs <- call_m_chain(ENCH_TL)

verif_calcul_primitive_isf_raw():
call_m_verif(isf,calculee)
call_m_verifs(isf, nb_category(calculee *) > 0)

verif_calcul_primitive_raw():
verif_calcul_primitive_isf_raw()
call_m_verif(primitif,calculee)
call_m_verifs(primitive, nb_category(calculee *) > 0)

verif_calcul_corrective_raw():
outputs <- calcul_primitif_isf()
verif_calcul_primitive_isf_raw()
call_m_verif(corrective,calculee)
call_m_verifs(corrective, nb_category(calculee *) > 0)

verif_saisie_cohe_primitive_isf_raw():
call_m_verif(isf,saisie)
call_m_verifs(isf, nb_category(saisie *) > 0 and nb_category(calculee *) == 0)

verif_saisie_cohe_primitive_raw():
verif_saisie_cohe_primitive_isf_raw()
outputs <- calcul_primitif_isf()
verif_calcul_primitive_isf_raw()
call_m_verif(primitif,saisie)
call_m_verifs(primitive, nb_category(saisie *) > 0 and nb_category(calculee *) == 0)

verif_saisie_cohe_corrective_raw():
verif_saisie_cohe_primitive_isf_raw()
call_m_verif(corrective,saisie)
call_m_verifs(corrective, nb_category(saisie *) > 0 and nb_category(calculee *) == 0)

verif_cohe_horizontale_raw():
call_m_verif(horizontale)
call_m_verifs(horizontale corrective)

verif_contexte_cohe_primitive_raw():
call_m_verif(primitive,contexte)
call_m_verifs(primitive, nb_category(saisie contexte) > 0 and nb_category(calculee *) == 0)

verif_contexte_cohe_corrective_raw():
call_m_verif(corrective,contexte)
call_m_verifs(corrective, nb_category(saisie contexte) > 0 and nb_category(calculee *) == 0)

verif_famille_cohe_primitive_raw():
call_m_verif(primitive,famille)
call_m_verifs(primitive, nb_category(saisie famille) > 0 and nb_category(calculee *) == 0)

verif_famille_cohe_corrective_raw():
call_m_verif(corrective,famille)
call_m_verifs(corrective, nb_category(saisie famille) > 0 and nb_category(calculee *) == 0)

verif_revenu_cohe_primitive_raw():
call_m_verif(primitive,revenu)
call_m_verifs(primitive, nb_category(saisie revenu) > 0 and nb_category(calculee *) == 0)

verif_revenu_cohe_corrective_raw():
call_m_verif(corrective,revenu)
call_m_verifs(corrective, nb_category(saisie revenu) > 0 and nb_category(calculee *) == 0)

dgfip_calculation():
APPLI_OCEANS = 0
Expand Down
11 changes: 4 additions & 7 deletions src/mlang/backend_compilers/bir_to_dgfip_c.ml
Original file line number Diff line number Diff line change
Expand Up @@ -425,7 +425,6 @@ let generate_mpp_functions_signatures (oc : Format.formatter)

let generate_rovs_files (dgfip_flags : Dgfip_options.flags) (program : program)
(folder : string) (vm : Dgfip_varid.var_id_map) =
let module StringMap = Map.Make (String) in
let default_file = "default" in
let filemap =
ROVMap.fold
Expand All @@ -438,14 +437,12 @@ let generate_rovs_files (dgfip_flags : Dgfip_options.flags) (program : program)
^ ".c"
in
let filerovs =
match StringMap.find_opt file filemap with
| None -> []
| Some fr -> fr
match StrMap.find_opt file filemap with None -> [] | Some fr -> fr
in
StringMap.add file (rov :: filerovs) filemap)
program.rules_and_verifs StringMap.empty
StrMap.add file (rov :: filerovs) filemap)
program.rules_and_verifs StrMap.empty
in
StringMap.fold
StrMap.fold
(fun file rovs orphan ->
if String.equal file default_file then rovs @ orphan
else
Expand Down
Loading

0 comments on commit 98b5ace

Please sign in to comment.