Merge branch 'master' into c_backend

This commit is contained in:
Denis Merigoux 2024-01-16 16:23:35 +01:00
commit 349da741d4
No known key found for this signature in database
GPG Key ID: EE99DCFA365C3EE3
172 changed files with 244 additions and 34390 deletions

9
.gitignore vendored
View File

@ -17,14 +17,5 @@ build.ninja
.envrc
.direnv
french_law/js/src/french_law.js
french_law/ocaml/law_source/allocations_familiales.ml
french_law/ocaml/law_source/allocations_familiales_api_web.ml
french_law/ocaml/law_source/unit_tests/tests_allocations_famiales.ml
french_law/python/src/allocations_familiales.py
french_law/ocaml/law_source/aides_logement.ml
french_law/ocaml/law_source/aides_logement_api_web.ml
french_law/python/src/aides_logement.py
french_law/python/src/runtime.py
.catleg_secrets.toml

View File

@ -2,7 +2,7 @@
# STAGE 1: setup an opam switch with all dependencies installed
#
# (only depends on the opam files)
FROM ocamlpro/ocaml:4.14-2023-08-01 AS dev-build-context
FROM ocamlpro/ocaml:4.14-2024-01-14 AS dev-build-context
# Image from https://hub.docker.com/r/ocamlpro/ocaml
RUN mkdir catala
@ -34,7 +34,7 @@ FROM dev-build-context
ADD --chown=ocaml:ocaml . .
# Prepare extra local dependencies
RUN opam exec -- make dependencies-python dependencies-js pygments
RUN opam exec -- make dependencies-python pygments
# OCaml backtraces may be useful on failure
ENV OCAMLRUNPARAM=b

View File

@ -151,16 +151,6 @@ repository.
pages, as well as the `rsync` executable to transfer files (preferred to `cp`)
because it also works with a remote server.
#### Updating [`@catala-lang/french-law`](https://www.npmjs.com/package/@catala-lang/french-law)
When a new version of the `french_law.js` (see the [dedicated
README](https://github.com/CatalaLang/catala/tree/master/french_law/js#generating-the-source-files)
to generate the lib) needs to be published, you need to execute from the
`french_law/js` directory, the following commands:
npm version patch -m "Patch message"
npm publish
## Syntax highlighting
See the [dedicated `README.md`](./syntax_highlighting/README.md).

203
Makefile
View File

@ -29,9 +29,6 @@ dependencies-ocaml-with-z3:
OPAMVAR_cataladevmode=1 OPAMVAR_catalaz3mode=1 $(OPAM) install . --with-doc --with-test --update-invariant --depext-only
OPAMVAR_cataladevmode=1 OPAMVAR_catalaz3mode=1 $(OPAM) install . --with-doc --with-test --update-invariant --deps-only
dependencies-js:
$(MAKE) -C $(FRENCH_LAW_JS_LIB_DIR) dependencies
PY_VENV_DIR = _python_venv
PY_VENV_ACTIVATE = . $(PY_VENV_DIR)/bin/activate;
@ -40,14 +37,14 @@ PY_VENV_ACTIVATE = . $(PY_VENV_DIR)/bin/activate;
$(PY_VENV_DIR): $(PY_VENV_DIR)/stamp
$(PY_VENV_DIR)/stamp: \
runtimes/python/catala/pyproject.toml \
runtimes/python/pyproject.toml \
syntax_highlighting/en/pygments/pyproject.toml \
syntax_highlighting/fr/pygments/pyproject.toml \
syntax_highlighting/pl/pygments/pyproject.toml
test -d $(PY_VENV_DIR) || python3 -m venv $(PY_VENV_DIR)
$(PY_VENV_ACTIVATE) python3 -m pip install -U pip
$(PY_VENV_ACTIVATE) python3 -m pip install -U \
-e runtimes/python/catala \
-e runtimes/python \
-e syntax_highlighting/en/pygments \
-e syntax_highlighting/fr/pygments \
-e syntax_highlighting/pl/pygments
@ -55,10 +52,18 @@ $(PY_VENV_DIR)/stamp: \
dependencies-python: $(PY_VENV_DIR)
#> dependencies : Install the Catala OCaml, JS and Git dependencies
dependencies: dependencies-ocaml dependencies-js dependencies-python
build-runtime-python: dependencies-python
$(PY_VENV_ACTIVATE) python3 -m pip install -U build
$(PY_VENV_ACTIVATE) python -m build runtimes/python -o _build/python-runtime/
dependencies-with-z3: dependencies-ocaml-with-z3 dependencies-js dependencies-python
publish-runtime-python:
$(PY_VENV_ACTIVATE) python3 -m pip install -U twine
$(PY_VENV_ACTIVATE) python -m twine upload _build/python-runtime/*
#> dependencies : Install the Catala OCaml, JS and Git dependencies
dependencies: dependencies-ocaml dependencies-python
dependencies-with-z3: dependencies-ocaml-with-z3 dependencies-python
##########################################
# Catala compiler rules
@ -91,8 +96,18 @@ doc:
dune build @doc
ln -sf $(PWD)/_build/default/_doc/_html/index.html doc/odoc.html
install:
dune build @install
prepare-install:
dune build @install --promote-install-files
install: prepare-install
if [ x$$($(OPAM) --version) = "x2.1.5" ]; then \
$(OPAM) install . --working-dir; \
else \
$(OPAM) install . --working-dir --assume-built; \
fi
# `dune install` would work, but does a dirty install to the opam prefix without
# registering with opam.
# --assume-built is broken in 2.1.5
#> runtimes : Builds the OCaml and js_of_ocaml runtimes
runtimes:
@ -168,135 +183,6 @@ vscode: vscode_fr vscode_en
syntax:
$(MAKE) -C doc/syntax
##########################################
# Literate programming and examples
##########################################
EXAMPLES_DIR=examples
ALLOCATIONS_FAMILIALES_DIR=$(EXAMPLES_DIR)/allocations_familiales
AIDES_LOGEMENT_DIR=$(EXAMPLES_DIR)/aides_logement
US_TAX_CODE_DIR=$(EXAMPLES_DIR)/us_tax_code
TUTORIAL_EN_DIR=$(EXAMPLES_DIR)/tutorial_en
TUTORIEL_FR_DIR=$(EXAMPLES_DIR)/tutoriel_fr
POLISH_TAXES_DIR=$(EXAMPLES_DIR)/polish_taxes
literate_aides_logement: build $(PY_VENV_DIR)
$(MAKE) -C $(AIDES_LOGEMENT_DIR) aides_logement.tex
$(MAKE) -C $(AIDES_LOGEMENT_DIR) aides_logement.html
literate_allocations_familiales: build
$(MAKE) -C $(ALLOCATIONS_FAMILIALES_DIR) allocations_familiales.tex
$(MAKE) -C $(ALLOCATIONS_FAMILIALES_DIR) allocations_familiales.html
literate_us_tax_code: build
$(MAKE) -C $(US_TAX_CODE_DIR) us_tax_code.tex
$(MAKE) -C $(US_TAX_CODE_DIR) us_tax_code.html
literate_tutorial_en: build
$(MAKE) -C $(TUTORIAL_EN_DIR) tutorial_en.tex
$(MAKE) -C $(TUTORIAL_EN_DIR) tutorial_en.html
literate_tutoriel_fr: build
$(MAKE) -C $(TUTORIEL_FR_DIR) tutoriel_fr.tex
$(MAKE) -C $(TUTORIEL_FR_DIR) tutoriel_fr.html
literate_polish_taxes: build
$(MAKE) -C $(POLISH_TAXES_DIR) polish_taxes.tex
$(MAKE) -C $(POLISH_TAXES_DIR) polish_taxes.html
#> literate_examples : Builds the .tex and .html versions of the examples code. Needs pygments to be installed and patched with Catala.
literate_examples: literate_allocations_familiales \
literate_us_tax_code literate_tutorial_en literate_tutoriel_fr \
literate_polish_taxes literate_aides_logement
##########################################
# French law library
##########################################
#-----------------------------------------
# OCaml
#-----------------------------------------
FRENCH_LAW_OCAML_LIB_DIR = french_law/ocaml
FRENCH_LAW_LIBRARY_OCAML = \
$(FRENCH_LAW_OCAML_LIB_DIR)/law_source/allocations_familiales_api_web.ml \
$(FRENCH_LAW_OCAML_LIB_DIR)/law_source/unit_tests/tests_allocations_familiales.ml \
$(FRENCH_LAW_OCAML_LIB_DIR)/law_source/aides_logement_api_web.ml
$(addprefix _build/default/,$(FRENCH_LAW_LIBRARY_OCAML)) :
dune build $@
#> generate_french_law_library_ocaml : Generates the French law library OCaml sources from Catala
generate_french_law_library_ocaml:
dune build $(FRENCH_LAW_LIBRARY_OCAML)
#> build_french_law_library_ocaml : Builds the OCaml French law library
build_french_law_library_ocaml:
dune build $(FRENCH_LAW_OCAML_LIB_DIR)/api.a
run_french_law_library_benchmark_ocaml:
dune exec $(FRENCH_LAW_OCAML_LIB_DIR)/bench.exe
run_french_law_library_ocaml_tests:
dune exec $(FRENCH_LAW_OCAML_LIB_DIR)/law_source/unit_tests/run_tests.exe
#-----------------------------------------
# JSON schemas
#-----------------------------------------
JSON_SCHEMAS = \
$(AIDES_LOGEMENT_DIR)/aides_logement_schema.json \
$(ALLOCATIONS_FAMILIALES_DIR)/allocations_familiales_schema.json
#> generate_french_law_json_schemas : Generates the French law library JSON schemas
$(addprefix _build/default/,$(JSON_SCHEMAS)):
dune build $@
generate_french_law_json_schemas:
dune build $(JSON_SCHEMAS)
#-----------------------------------------
# JS
#-----------------------------------------
FRENCH_LAW_JS_LIB_DIR=french_law/js
run_french_law_library_benchmark_js: build_french_law_library_js
$(MAKE) -C $(FRENCH_LAW_JS_LIB_DIR) bench
#> build_french_law_library_js : Builds the JS version of the OCaml French law library
build_french_law_library_js:
dune build $(FRENCH_LAW_JS_LIB_DIR)/src/french_law.js
$(MAKE) -C $(FRENCH_LAW_JS_LIB_DIR) bench
#> build_french_law_library_web_api : Builds the web API of the French law library
build_french_law_library_web_api: build_french_law_library_js generate_french_law_json_schemas
#-----------------------------------------
# Python
#-----------------------------------------
FRENCH_LAW_PYTHON_LIB_DIR=french_law/python
FRENCH_LAW_LIBRARY_PYTHON = \
$(FRENCH_LAW_PYTHON_LIB_DIR)/src/allocations_familiales.py \
$(FRENCH_LAW_PYTHON_LIB_DIR)/src/aides_logement.py
$(FRENCH_LAW_LIBRARY_PYTHON):
dune build $@
#> generate_french_law_library_python : Generates the French law library Python sources from Catala
generate_french_law_library_python:
dune build $(FRENCH_LAW_LIBRARY_PYTHON)
#> type_french_law_library_python : Types the French law library Python sources with mypy
type_french_law_library_python: $(PY_VENV_DIR) generate_french_law_library_python
$(PY_VENV_ACTIVATE) $(MAKE) -C $(FRENCH_LAW_PYTHON_LIB_DIR) type
run_french_law_library_benchmark_python: $(PY_ENV_DIR) type_french_law_library_python
$(PY_VENV_ACTIVATE) $(MAKE) -C $(FRENCH_LAW_PYTHON_LIB_DIR) bench
##########################################
# High-level test and benchmarks commands
##########################################
@ -313,26 +199,9 @@ CLERK=$(CLERK_BIN) --exe $(CATALA_BIN) \
.FORCE:
test_suite: .FORCE install
@$(MAKE) -C tests pass_all_tests
test_examples: .FORCE install
@$(MAKE) -C examples pass_all_tests
#> tests : Run interpreter tests
tests: test_suite test_examples
#> tests_ocaml : Run OCaml unit tests for the Catala-generated code
tests_ocaml: run_french_law_library_ocaml_tests
#> bench_ocaml : Run OCaml benchmarks for the Catala-generated code
bench_ocaml: run_french_law_library_benchmark_ocaml
#> bench_js : Run JS benchmarks for the Catala-generated code
bench_js: run_french_law_library_benchmark_js
#> bench_python : Run Python benchmarks for the Catala-generated code
bench_python: run_french_law_library_benchmark_python
tests: .FORCE prepare-install
@$(MAKE) -C tests pass_all_tests
tests/%: .FORCE
@$(MAKE) -C tests $*
@ -346,7 +215,7 @@ WEBSITE_ASSETS = grammar.html catala.html clerk.html
$(addprefix _build/default/,$(WEBSITE_ASSETS)):
dune build $@
website-assets-base: build_french_law_library_web_api literate_examples build
website-assets-base: build
dune build $(WEBSITE_ASSETS)
#> website-assets : Builds all the assets necessary for the Catala website
@ -354,7 +223,7 @@ website-assets:
$(MAKE) DUNE_PROFILE=release website-assets-base
##########################################
# Misceallenous
# Miscellaneous
##########################################
#> all : Run all make commands
@ -363,12 +232,6 @@ all: \
tests \
runtimes \
plugins \
generate_french_law_library_ocaml build_french_law_library_ocaml \
tests_ocaml bench_ocaml \
build_french_law_library_js \
bench_js \
generate_french_law_library_python type_french_law_library_python \
bench_python \
website-assets-base
@ -398,13 +261,7 @@ help_catala:
##########################################
# Special targets
##########################################
.PHONY: inspect clean all literate_examples english allocations_familiales \
.PHONY: inspect clean all english allocations_familiales \
pygments install build_dev build doc format dependencies \
dependencies-ocaml catala.html help parser-messages plugins \
generate_french_law_json_schemas generate_french_law_library_python \
generate_french_law_library_ocaml \
run_french_law_library_benchmark_python \
run_french_law_library_benchmark_js run_french_law_library_ocaml_tests \
build_french_law_library_js build_french_law_library_web_api \
build_french_law_library_ocaml \
website-assets website-assets-base

View File

@ -190,7 +190,7 @@ To explore the different programs written in Catala, see
## API
To know how to use the code generated by the Catala compiler in your favorite
programming language, head to the [readme of the French law library](french_law/README.md). The corresponding pre-built examples are also [available](https://catalalang.github.io/catala/).
programming language, head to the [readme of the French law library](https://github.com/catalalang/french_law/README.md). The corresponding pre-built examples are also [available](https://catalalang.github.io/catala/).
## Contributing

View File

@ -1,12 +1,6 @@
(library
(name ninja_utils)
(public_name ninja_utils)
(modules ninja_utils)
(libraries re))
(library
(name clerk_driver)
(public_name clerk.driver)
(public_name catala.clerk_driver)
(libraries
catala.runtime_ocaml
catala.catala_utils
@ -31,9 +25,8 @@
(flags
(:standard
(:include custom_linking.sexp)))
(libraries clerk.driver)
(link_deps
(package catala))
(libraries clerk_driver)
(link_deps ../compiler/catala.exe)
; not a real dependency, but when running clerk in practice you always want the catala binary to be up-to-date (e.g. `dune exec -- ckerk test`)
(modules clerk)
(package clerk))
(package catala))

View File

@ -1,165 +0,0 @@
(* This file is part of the Catala build system, a specification language for
tax and social benefits computation rules. Copyright (C) 2020 Inria,
contributor: Emile Rolley <emile.rolley@tuta.io>
Licensed under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations under
the License. *)
(** Ninja variable names *)
module Var = struct
type t = V of string
let make s = V s
let name (V v) = v
let v (V v) = Printf.sprintf "${%s}" v
end
module Expr = struct
type t = string list
let format =
Format.pp_print_list
~pp_sep:(fun fmt () -> Format.pp_print_char fmt ' ')
(fun fmt s ->
Format.pp_print_string fmt
(Re.replace_string Re.(compile space) ~by:"$ " s))
end
module Binding = struct
type t = Var.t * Expr.t
let make var e = var, e
let format ~global ppf (v, e) =
if not global then Format.pp_print_string ppf " ";
Format.fprintf ppf "%s = %a" (Var.name v) Expr.format e
let format_list ~global ppf l =
Format.pp_print_list ~pp_sep:Format.pp_print_newline (format ~global) ppf l
end
module Rule = struct
type t = {
name : string;
command : Expr.t;
description : Expr.t option;
vars : Binding.t list;
}
let make ?(vars = []) name ~command ~description =
{ name; command; description = Option.some description; vars }
let format fmt rule =
let bindings =
Binding.make (Var.make "command") rule.command
:: Option.(
to_list
(map
(fun d -> Binding.make (Var.make "description") d)
rule.description))
@ rule.vars
in
Format.fprintf fmt "rule %s\n%a" rule.name
(Binding.format_list ~global:false)
bindings
end
module Build = struct
type t = {
rule : string;
inputs : Expr.t option;
implicit_in : Expr.t;
outputs : Expr.t;
implicit_out : Expr.t option;
vars : Binding.t list;
}
let make ?inputs ?(implicit_in = []) ~outputs ?implicit_out ?(vars = []) rule
=
{ rule; inputs; implicit_in; outputs; implicit_out; vars }
let empty = make ~outputs:["empty"] "phony"
let unpath ?(sep = "-") path =
Re.Pcre.(substitute ~rex:(regexp "/") ~subst:(fun _ -> sep)) path
let format fmt t =
Format.fprintf fmt "build %a%a: %s%a%a%a%a" Expr.format t.outputs
(Format.pp_print_option (fun fmt i ->
Format.pp_print_string fmt " | ";
Expr.format fmt i))
t.implicit_out t.rule
(Format.pp_print_option (fun ppf e ->
Format.pp_print_char ppf ' ';
Expr.format ppf e))
t.inputs
(fun ppf -> function
| [] -> ()
| e ->
Format.pp_print_string ppf " | ";
Expr.format ppf e)
t.implicit_in
(if t.vars = [] then fun _ () -> () else Format.pp_print_newline)
()
(Binding.format_list ~global:false)
t.vars
end
module Default = struct
type t = Expr.t
let make rules = rules
let format ppf t = Format.fprintf ppf "default %a" Expr.format t
end
type def =
| Comment of string
| Binding of Binding.t
| Rule of Rule.t
| Build of Build.t
| Default of Default.t
let comment s = Comment s
let binding v e = Binding (Binding.make v e)
let rule ?vars name ~command ~description =
Rule (Rule.make ?vars name ~command ~description)
let build ?inputs ?implicit_in ~outputs ?implicit_out ?vars rule =
Build (Build.make ?inputs ?implicit_in ~outputs ?implicit_out ?vars rule)
let default rules = Default (Default.make rules)
let format_def ppf def =
let () =
match def with
| Comment s ->
Format.pp_print_list ~pp_sep:Format.pp_print_newline
(fun ppf s ->
if s <> "" then Format.pp_print_string ppf "# ";
Format.pp_print_string ppf s)
ppf
(String.split_on_char '\n' s)
| Binding b -> Binding.format ~global:true ppf b
| Rule r ->
Rule.format ppf r;
Format.pp_print_newline ppf ()
| Build b -> Build.format ppf b
| Default d -> Default.format ppf d
in
Format.pp_print_flush ppf ()
type ninja = def Seq.t
let format ppf t =
Format.pp_print_seq ~pp_sep:Format.pp_print_newline format_def ppf t;
Format.pp_print_newline ppf ()

View File

@ -1,165 +0,0 @@
(* This file is part of the Catala build system, a specification language for
tax and social benefits computation rules. Copyright (C) 2020 Inria,
contributor: Emile Rolley <emile.rolley@tuta.io>
Licensed under the Apache License, Version 2.0 (the "License"); you may not
use this file except in compliance with the License. You may obtain a copy of
the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
License for the specific language governing permissions and limitations under
the License. *)
(** This library contains the implementations of utility functions used to
generate {{:https://ninja-build.org} Ninja} build files in OCaml with almost
no dependencies -- it only depends on
{{:https://v3.ocaml.org/p/re/1.10.3/doc/Re/index.html} Re}. It's currently
developed to be used by
{{:https://github.com/CatalaLang/catala/tree/master/build_system} Clerk},
the {{:https://catala-lang.org} Catala} build system. Therefore, the library
{b supports only very basic features} required by Clerk. *)
(** {2 What is Ninja?} *)
(** {{:https://ninja-build.org} Ninja} is a low-level build system. It's
designed to have its input files ({i build.ninja}) generated by a
higher-level build system, and to run builds as fast as possible by
supporting native cross-platform (Windows and Unix) parallel builds.
See the {{:https://ninja-build.org/manual.html} manual} for more details. *)
(** {1 Ninja expressions} *)
(** Ninja variable names, distinguishing binding name ("x") from references in
expressions ("$x") *)
module Var : sig
type t
val make : string -> t
val name : t -> string
(** Var base name, used when binding it *)
val v : t -> string
(** Var reference with a preceding "$", for use in expressoins *)
end
(** Helper module to build ninja expressions. *)
module Expr : sig
type t = string list
(** Ninja expressions are represented as raw string lists, which may contain
variables or "$-escapes" *)
val format : Format.formatter -> t -> unit
(** [format fmt exp] outputs in [fmt] the string representation of the ninja
expression [exp]. Spaces in individual elements are escaped (but no check
is made for e.g. newlines) *)
end
module Binding : sig
type t = Var.t * Expr.t
val make : Var.t -> Expr.t -> t
val format : global:bool -> Format.formatter -> t -> unit
end
(** {1 Ninja rules} *)
(** Helper module to build
{{:https://ninja-build.org/manual.html#_rules} ninja rules}. *)
module Rule : sig
type t
(** Represents the minimal ninja rule representation for Clerk:
{[
rule <name>
command = <command>
[description = <description>]
]} *)
val make :
?vars:Binding.t list -> string -> command:Expr.t -> description:Expr.t -> t
(** [make name ~command ~description] returns the corresponding ninja
{!type:Rule.t}. *)
val format : Format.formatter -> t -> unit
(** [format fmt rule] outputs in [fmt] the string representation of the ninja
[rule]. *)
end
(** {1 Ninja builds} *)
(** Helper module to build ninja
{{:https://ninja-build.org/manual.html#_build_statements} build statements}. *)
module Build : sig
type t
(** Represents the minimal ninja build statement representation for Clerk:
{[
build <outputs>: <rule> [<inputs>]
[<vars>]
]}*)
val make :
?inputs:Expr.t ->
?implicit_in:Expr.t ->
outputs:Expr.t ->
?implicit_out:Expr.t ->
?vars:(Var.t * Expr.t) list ->
string ->
t
(** [make ~outputs rule] returns the corresponding ninja {!type:Build.t}. *)
val empty : t
(** [empty] is the minimal ninja {!type:Build.t} with ["empty"] as
{!field:outputs} and ["phony"] as {!field: rule}. *)
val unpath : ?sep:string -> string -> string
(** [unpath ~sep path] replaces all [/] occurences with [sep] in [path] to
avoid ninja writing the corresponding file and use it as sub command. By
default, [sep] is set to ["-"]. *)
val format : Format.formatter -> t -> unit
(** [format fmt build] outputs in [fmt] the string representation of the ninja
[build]. *)
end
module Default : sig
type t
val make : Expr.t -> t
val format : Format.formatter -> t -> unit
end
type def =
| Comment of string
| Binding of Binding.t
| Rule of Rule.t
| Build of Build.t
| Default of Default.t
val comment : string -> def
val binding : Var.t -> Expr.t -> def
val rule :
?vars:Binding.t list -> string -> command:Expr.t -> description:Expr.t -> def
val build :
?inputs:Expr.t ->
?implicit_in:Expr.t ->
outputs:Expr.t ->
?implicit_out:Expr.t ->
?vars:(Var.t * Expr.t) list ->
string ->
def
val default : Expr.t -> def
val format_def : Format.formatter -> def -> unit
type ninja = def Seq.t
val format : Format.formatter -> ninja -> unit

View File

@ -1,5 +1,5 @@
opam-version: "2.0"
version: "0.8.0"
version: "0.9.0"
synopsis:
"Compiler and library for the literate programming language for tax code specification"
description:
@ -24,8 +24,8 @@ depends: [
"cmdliner" {>= "1.1.0"}
"cppo" {>= "1"}
"dates_calc" {>= "0.0.4"}
"dune" {>= "2.8"}
"dune-build-info" {>= "2.8"}
"dune" {>= "3.11"}
"dune-build-info" {>= "3.0"}
"js_of_ocaml-ppx" {= "4.1.0"}
"menhir" {>= "20200211"}
"menhirLib" {>= "20200211"}
@ -44,13 +44,16 @@ depends: [
"zarith_stubs_js" {>= "v0.14.1"}
"crunch" {>= "3.0.0"}
"alcotest" {>= "1.5.0"}
"ninja_utils" {= "0.9.0"}
"odoc" {with-doc}
"ocamlformat" {cataladevmode & = "0.26.0"}
"obelisk" {cataladevmode}
"conf-npm" {cataladevmode}
"conf-python-3-dev" {cataladevmode}
"cpdf" {cataladevmode}
"conf-diffutils" {cataladevmode}
"z3" {catalaz3mode}
"conf-ninja"
]
depopts: ["z3"]
conflicts: [
@ -58,7 +61,6 @@ conflicts: [
"base" {>= "v0.16.0"}
]
build: [
["dune" "subst"] {dev}
[
"dune"
"build"

View File

@ -1,43 +0,0 @@
opam-version: "2.0"
version: "0.8.0"
synopsis:
"Build system for Catala, a specification language for tax and social benefits computation rules"
description:
"Clerk is a build system for Catala, a specification language for tax and social benefits computation rules, see https://catala-lang.org"
maintainer: ["contact@catala-lang.org"]
authors: ["Emile Rolley" "Denis Merigoux"]
license: "Apache-2.0"
homepage: "https://github.com/CatalaLang/catala"
bug-reports: "https://github.com/CatalaLang/catala/issues"
depends: [
"dune" {>= "2.8"}
"dune-build-info" {>= "2.8"}
"ocaml" {>= "4.14.0"}
"cmdliner" {>= "1.1.0"}
"re" {>= "1.9.0"}
"ocolor" {>= "1.3.0"}
"alcotest" {with-test & >= "1.5.0"}
"catala" {= version}
"ninja_utils" {= version}
"odoc" {with-doc}
"conf-diffutils" {cataladevmode}
]
build: [
["dune" "subst"] {dev}
[
"dune"
"build"
"-p"
name
"-j"
jobs
"@install"
"@runtest" {with-test}
"@doc" {with-doc}
]
]
dev-repo: "git+https://github.com/CatalaLang/catala.git"
depexts: [
["ninja-build"] {os-family = "debian"}
["samurai"] {os-distribution = "alpine"}
]

View File

@ -435,7 +435,7 @@ let resolved_type ((op : resolved t), pos) =
| Sub_rat_rat -> [TRat; TRat], TRat
| Sub_mon_mon -> [TMoney; TMoney], TMoney
| Sub_dat_dat -> [TDate; TDate], TDuration
| Sub_dat_dur -> [TDate; TDuration], TDuration
| Sub_dat_dur -> [TDate; TDuration], TDate
| Sub_dur_dur -> [TDuration; TDuration], TDuration
| Mult_int_int -> [TInt; TInt], TInt
| Mult_rat_rat -> [TRat; TRat], TRat

View File

@ -980,8 +980,10 @@ module UserFacing = struct
aux (Z.abs n)
let money (lang : Cli.backend_lang) ppf n =
let num = Z.abs n in
let units, cents = Z.div_rem num (Z.of_int 100) in
if Z.sign n < 0 then Format.pp_print_char ppf '-';
(match lang with En -> Format.pp_print_string ppf "$" | Fr | Pl -> ());
let units, cents = Z.div_rem n (Z.of_int 100) in
integer lang ppf units;
Format.pp_print_string ppf (decsep lang);
Format.fprintf ppf "%02d" (Z.to_int (Z.abs cents));

12
dune
View File

@ -1,4 +1,4 @@
(dirs runtimes compiler french_law build_system examples)
(dirs runtimes compiler build_system)
(data_only_dirs tests syntax_highlighting)
@ -50,16 +50,8 @@
(rule
(alias runtest)
(package clerk)
(package catala)
(deps
(source_tree tests))
(action
(run clerk --exe %{bin:catala} test tests)))
(rule
(alias runtest)
(package clerk)
(deps
(source_tree examples))
(action
(run clerk --exe %{bin:catala} test examples)))

View File

@ -1,4 +1,4 @@
(lang dune 3.0)
(lang dune 3.11)
(name catala)
@ -6,6 +6,8 @@
(formatting)
(subst disabled)
(source
(uri git+https://github.com/CatalaLang/catala.git))
@ -27,3 +29,4 @@
(license Apache-2.0)
(using menhir 2.1)
(using directory-targets 0.1)

View File

@ -1,25 +0,0 @@
CATALA_OPTS?=
CLERK_OPTS?=--makeflags="$(MAKEFLAGS)"
CLERK=_build/default/build_system/clerk.exe test --exe "_build/default/compiler/catala.exe" \
$(CLERK_OPTS) $(if $(CATALA_OPTS),--catala-opts=$(CATALA_OPTS),)
################################
# Running legislation unit tests
################################
pass_all_tests:
@cd ..; $(CLERK) examples
reset_all_tests: CLERK_OPTS+=--reset
reset_all_tests:
@cd ..; $(CLERK) examples
%.catala_en %.catala_fr %.catala_pl: .FORCE
# Here we cd to the root of the Catala repository such that the paths \
# displayed in error messages start with `examples/` uniformly.
@cd ..; $(CLERK) examples/$@
.FORCE:
.PHONY: pass_all_tests reset_all_tests

View File

@ -1,97 +0,0 @@
##########################################
# Variables
##########################################
LATEXMK?=latexmk
CURR_DIR=examples/$(shell basename $(shell pwd))/
CATALA=cd ../../; _build/default/compiler/catala.exe
CATALA_OPTS := $(CATALA_OPTS) --language=$(CATALA_LANG)
PLUGIN_DIR=_build/default/compiler/plugins
help : ../Makefile.common.mk
@sed -n 's/^#> //p' $<
##########################################
# Targets
##########################################
#> SCOPE=<ScopeName> <target_file>.run : Runs the interpeter for the scope of the file
%.run: %.catala_$(CATALA_LANG)
@$(CATALA) Makefile $(CATALA_OPTS) $(CURR_DIR)$<
$(CATALA) Interpret $(CATALA_OPTS) \
-s $(SCOPE) \
$(CURR_DIR)$<
#> <target_file>.ml : Compiles the file to OCaml
%.ml: %.catala_$(CATALA_LANG)
@$(CATALA) Makefile $(CATALA_OPTS) $(CURR_DIR)$<
$(CATALA) OCaml $(CATALA_OPTS) \
$(CURR_DIR)$<
#> <target_file>_api_web.ml : Compiles the file to OCaml + generates the API web
%_api_web.ml: %.catala_$(CATALA_LANG)
@$(CATALA) Makefile $(CATALA_OPTS) $(CURR_DIR)$<
$(CATALA) api_web $(CATALA_OPTS) \
--plugin-dir=$(PLUGIN_DIR) \
$(CURR_DIR)$<
#> SCOPE=<ScopeName> <target_file>_api_web.ml : Generates the JSON schema
%_schema.json: %.catala_$(CATALA_LANG)
@$(CATALA) Makefile $(CATALA_OPTS) $(CURR_DIR)$<
$(CATALA) json_schema $(CATALA_OPTS) \
--plugin-dir=$(PLUGIN_DIR) \
-s $(SCOPE) \
$(CURR_DIR)$<
#> <target_file>.py : Compiles the file to Python
%.py: %.catala_$(CATALA_LANG)
@$(CATALA) Makefile $(CATALA_OPTS) $(CURR_DIR)$<
$(CATALA) Python $(CATALA_OPTS) \
$(CURR_DIR)$<
#> <target_file>.tex : Weaves the file to LaTeX
%.tex: %.catala_$(CATALA_LANG)
@$(CATALA) Makefile $(CATALA_OPTS) $(CURR_DIR)$<
$(CATALA) LaTeX $(CATALA_OPTS) \
--wrap \
$(CURR_DIR)$<
#> <target_file>.pdf : Weaves the file to PDF (via XeLaTeX)
%.pdf: %.tex
cd $(@D) && $(LATEXMK) -g -xelatex -halt-on-error -shell-escape $(%F)
#> <target_file>.html : Weaves the file to HTML
%.html: %.catala_$(CATALA_LANG)
@$(CATALA) Makefile $(CATALA_OPTS) $(CURR_DIR)$<
$(CATALA) HTML $(CATALA_OPTS) \
--wrap \
$(CURR_DIR)$<
%.spellok: %.catala_$(CATALA_LANG) ../whitelist.$(CATALA_LANG)
aspell list --lang=$(CATALA_LANG) --mode=markdown --camel-case --add-wordlists=../whitelist.$(CATALA_LANG) <$< | tee "$<".errors
@# list of mispelled words must be empty
@test ! -s "$<".errors
@touch $@
##########################################
# Misceallenous
##########################################
#> clean : Removes intermediate files
clean:
$(LATEXMK) -f -C $(SRC:.catala_$(CATALA_LANG)=.tex)
rm -rf $(SRC:.catala_$(CATALA_LANG)=.tex) \
$(SRC:.catala_$(CATALA_LANG)=.d) \
_minted-$(SRC:.catala_$(CATALA_LANG)=) \
$(SRC:.catala_$(CATALA_LANG)=.html) \
$(SRC:.catala_$(CATALA_LANG)=.ml) \
$(SRC:.catala_$(CATALA_LANG)=_api_web.ml) \
$(SRC:.catala_$(CATALA_LANG)=_schema.json)
include $(wildcard $(SRC:.catala_$(CATALA_LANG)=.d))
.SECONDARY:

View File

@ -1,14 +0,0 @@
*.aux
*.dvi
*.fdb_latexmk
*.fls
*.log
*.out
*.fls
*.tex
*.pdf
_minted*
*.toc
*.pyg
*.d
*.ml

View File

@ -1,4 +0,0 @@
CATALA_LANG=en
SRC=nsw_communit_gaming.catala_en
include ../Makefile.common.mk

View File

@ -1,70 +0,0 @@
```catala
# Copyright © Aïda Ibrahim and Hugo Gimbert -- LaBRI/CNRS/Université de Bordeaux/Université de Nantes
```
```catala-metadata
declaration enumeration BenefitingOrganisation :
-- Charitable
-- NonProfit
--ObjectOfPublicOrCharitableCharacter
--NonCharitable
--ProfitOrg
--PrivatePurspose
declaration structure ArtUnion:
data grossProceeds content money
data typeOrg content BenefitingOrganisation
data proceedsToBenefitingOrg content money
data totalValueOfThePrizes content money
data maxAmountMoneyAsSeparatePrize content money
data holdsAuthority content boolean
declaration scope GamingAuthorized:
input artUnion content ArtUnion
internal minimumProceeds content boolean
internal benefitingOrg content boolean
internal valueOfPrizes content boolean
internal separatePrizeMaxValue content boolean
internal authority content boolean
output authorized condition
```
Art union gaming activities
The awarding of prizes by lot by an art union (an art union gaming activity) is a
permitted gaming activity for the purposes of section 10 of the Act if the following
requirements are complied with—
(a) not less than 30% of the gross proceeds of the gaming activity are paid to the
benefiting organisation,
```catala
scope GamingAuthorized:
definition minimumProceeds equals (artUnion.proceedsToBenefitingOrg >= artUnion.grossProceeds * 30 %)
definition benefitingOrg equals artUnion.typeOrg with pattern BenefitingOrganisation.Charitable or
artUnion.typeOrg with pattern BenefitingOrganisation.NonProfit or artUnion.typeOrg with pattern BenefitingOrganisation.ObjectOfPublicOrCharitableCharacter
```
(b) the total value of all the prizes exceeds $30,000,
```catala
scope GamingAuthorized:
definition valueOfPrizes equals (artUnion.totalValueOfThePrizes >= $30,000)
```
(c) the maximum amount of money payable as a separate prize does not exceed
$30,000,
```catala
scope GamingAuthorized:
definition separatePrizeMaxValue equals (artUnion.maxAmountMoneyAsSeparatePrize <= $30,000)
```
(d) the person conducting the activity holds an authority to do so that is in force
and the activity is conducted in accordance with the authority
```catala
scope GamingAuthorized:
definition authority equals artUnion.holdsAuthority
scope GamingAuthorized:
rule authorized
under condition minimumProceeds and benefitingOrg and valueOfPrizes and separatePrizeMaxValue and authority
consequence fulfilled
```

View File

@ -1,63 +0,0 @@
###
```catala-metadata
declaration enumeration OrganisationType :
-- Charitable
-- NonCharitable
declaration structure CharityHousie :
data typeOrg content OrganisationType
data grossProceeds content money
data totalValueOfThePrizes content money
data totalValueOfExpenses content money
data maxTicketsPerParticipant content integer
data proceedsToBenefitingOrganisation content money
declaration scope GamingAuthorized:
input charityHousie content CharityHousie
output authorized condition
#context benefitingOrg content Charitable
internal benefitingOrg content boolean
internal minimumProceeds content boolean
internal expenses content boolean
internal prizesTotal content boolean
internal maxTickets content boolean
```
(a) the gaming activity is conducted by or on behalf of a charitable organisation,
```catala
scope GamingAuthorized:
definition benefitingOrg equals (charityHousie.typeOrg with pattern OrganisationType.Charitable)
#definition benefitingOrg equals Charitable
#benefitingOrg = (charityHousie.typeOrg = Charitable)
```
(b) not less than 12.5% of the gross proceeds of the gaming activity are paid to the benefiting org
```catala
scope GamingAuthorized:
definition minimumProceeds equals charityHousie.proceedsToBenefitingOrganisation >= charityHousie.grossProceeds * 12.5 %
```
(c)the total value of the expenses of conducting the gaming activity (excluding
the cost of prizes) does not exceed 12.5% of the gross proceeds of the gaming activity
```catala
scope GamingAuthorized:
definition expenses equals (charityHousie.totalValueOfExpenses - charityHousie.totalValueOfThePrizes)<= charityHousie.grossProceeds * 12.5 %
```
(d) the total value of all of the prizes for 1 session of the gaming activity does not
exceed $10,000 and does not exceed 75% of the gross proceeds from the gaming activity
```catala
scope GamingAuthorized:
definition prizesTotal equals (charityHousie.totalValueOfThePrizes <= $10,000)
and (charityHousie.totalValueOfThePrizes <= charityHousie.grossProceeds* 75 %)
#definition prizesTotal equals (charityHousie.totalValuePrizePerSession <= 10.000)
#and (charityHousie.totalValuePrizePerSession <= (charityHousie.grossProceeds* 75%))
```
(e)no more than 48 tickets are permitted to be sold to the same participant
```catala
scope GamingAuthorized:
definition maxTickets equals charityHousie.maxTicketsPerParticipant <= 48
scope GamingAuthorized:
rule authorized
under condition benefitingOrg and minimumProceeds and expenses and prizesTotal and maxTickets
consequence fulfilled
```

View File

@ -1,48 +0,0 @@
###
```catala-metadata
declaration structure ClubBingo:
data registeredClub content boolean
data totalValuePrizePerGame content money
data bonusPrizeMaxValue content money
data bonusPrizeOffered content boolean
data prizeContent content boolean
declaration scope GamingAuthorized:
input clubBingo content ClubBingo
output authorized condition
internal conductor content boolean
internal prizeValueIsSmall content boolean
internal bonusPrize content boolean
internal contentPrize content boolean
```
(4) Club bingo Club bingo is a permitted gaming activity for the purposes of section 10 of the Act if the following requirements are complied with—
(a) it is conducted by or on the authority of a registered club on the registered club premises for the purpose of attracting patronage to the clubs facilities,
```catala
scope GamingAuthorized:
definition conductor equals clubBingo.registeredClub
```
(b) except as provided by paragraph (c), the total value of all of the available prizes for 1 game of the gaming activity does not exceed $70,
```catala
scope GamingAuthorized:
definition prizeValueIsSmall equals (clubBingo.totalValuePrizePerGame <= $70)
```
(c) if a bonus prize is offered at the end of a session of club bingo, only 1 prize of a value not exceeding $70 may be offered,
```catala
scope GamingAuthorized:
definition bonusPrize equals
( (clubBingo.bonusPrizeMaxValue <= $70) or (not clubBingo.bonusPrizeOffered) )
```
(d) none of the prizes consist of or include money.
```catala
scope GamingAuthorized:
definition contentPrize equals not clubBingo.prizeContent
rule authorized under condition
conductor and prizeValueIsSmall and bonusPrize and contentPrize
consequence fulfilled
```

View File

@ -1,52 +0,0 @@
```catala
# Copyright © Aïda Ibrahim and Hugo Gimbert -- LaBRI/CNRS/Université de Bordeaux/Université de Nantes
```
```catala-metadata
declaration enumeration OrganisationType:
-- Charitable
--NonProfit
--NonCharitable
--ProfitOrg
declaration structure DrawLottery:
data typeOrg content OrganisationType
data grossProceeds content money
data totalValueOfThePrizes content money
data proceedsToBenefitingOrg content money
declaration scope GamingAuthorized:
input drawLottery content DrawLottery
output authorized condition
internal benefitingOrg content boolean
internal minimumProceeds content boolean
internal maxValueOfPrizes content boolean
```
A draw lottery is a permitted gaming activity for the purposes of section 10 of the Act
if the following requirements are complied with—
(a) the gaming activity is conducted by or on behalf of a charitable organisation
or a non-profit organisation,
```catala
scope GamingAuthorized:
definition benefitingOrg equals drawLottery.typeOrg with pattern OrganisationType.Charitable or drawLottery.typeOrg with pattern OrganisationType.NonProfit
```
(b) not less than 40% of the gross proceeds of the gaming activity are paid to the
benefiting organisation,
```catala
scope GamingAuthorized:
definition minimumProceeds equals drawLottery.proceedsToBenefitingOrg >= drawLottery.grossProceeds * 40 %
```
(c) the total value of all of the prizes does not exceed $30,000.
```catala
scope GamingAuthorized:
definition maxValueOfPrizes equals drawLottery.totalValueOfThePrizes <= $30,000
scope GamingAuthorized:
rule authorized
under condition benefitingOrg and minimumProceeds and maxValueOfPrizes
consequence fulfilled
```

View File

@ -1,59 +0,0 @@
```catala
# Copyright © Aïda Ibrahim and Hugo Gimbert -- LaBRI/CNRS/Université de Bordeaux/Université de Nantes
```
```catala-metadata
declaration enumeration OrganisationType:
-- Charitable
--NonProfit
--NonCharitable
--ProfitOrg
declaration structure NoDrawLottery:
data typeOrg content OrganisationType
data grossProceeds content money
data totalValueOfThePrizes content money
data proceedsToBenefitingOrg content money
data maxTickets content integer
declaration scope GamingAuthorized:
input noDrawLottery content NoDrawLottery
output authorized condition
internal benefitingOrg content boolean
internal minimumProceeds content boolean
internal maxValueOfPrizes content boolean
internal maxTicketsProduced content boolean
```
A no-draw lottery is a permitted gaming activity for the purposes of section 10 of the
Act if the following requirements are complied with—
(a) the gaming activity is conducted by or on behalf of a charitable organisation
or a non-profit organisation,
```catala
scope GamingAuthorized:
definition benefitingOrg equals noDrawLottery.typeOrg with pattern OrganisationType.Charitable
or noDrawLottery.typeOrg with pattern OrganisationType.NonProfit
```
(b) not less than 40% of the gross proceeds of the gaming activity are paid to the
benefiting organisation,
```catala
scope GamingAuthorized:
definition minimumProceeds equals noDrawLottery.proceedsToBenefitingOrg >= noDrawLottery.grossProceeds * 40 %
```
(c) the total value of all of the prizes does not exceed $5,000,
```catala
scope GamingAuthorized:
definition maxValueOfPrizes equals noDrawLottery.totalValueOfThePrizes <= $5,000
```
(d) the total number of tickets produced or obtained for sale for the lottery does
not exceed 3,000.
```catala
scope GamingAuthorized:
definition maxTicketsProduced equals noDrawLottery.maxTickets <= 3000
scope GamingAuthorized:
rule authorized
under condition benefitingOrg and minimumProceeds and maxValueOfPrizes and maxTicketsProduced
consequence fulfilled
```

View File

@ -1,40 +0,0 @@
```catala
# Copyright © Aïda Ibrahim and Hugo Gimbert -- LaBRI/CNRS/Université de Bordeaux/Université de Nantes
```
```catala-metadata
declaration structure ProgressiveLottery:
data maxAmountPayable content money
data totalValueOfThePrizes content money
data holdsAuthority content boolean
declaration scope GamingAuthorized:
input progressiveLottery content ProgressiveLottery
output authorized condition
internal maxCashPrize content boolean
#context maxValueOfPrizes content boolean
#context authority content boolean
internal amountOfPrizesGreaterThan30000 content boolean
```
A progressive lottery is a permitted gaming activity for the purposes of section 10 of
the Act if the following requirements are complied with—
(a) the maximum amount of money payable as a prize does not exceed $7,000,
```catala
scope GamingAuthorized:
definition maxCashPrize equals (progressiveLottery.maxAmountPayable <= $7000)
```
(b) if the total value of all the prizes exceeds $30,000, the person conducting the
activity holds an authority to do so that is in force and the activity is conducted
in accordance with the authority.
```catala
scope GamingAuthorized:
definition amountOfPrizesGreaterThan30000 equals
(progressiveLottery.totalValueOfThePrizes < $30000
or progressiveLottery.holdsAuthority)
scope GamingAuthorized:
rule authorized
under condition maxCashPrize and amountOfPrizesGreaterThan30000
consequence fulfilled
```

View File

@ -1,73 +0,0 @@
```catala
# Copyright © Aïda Ibrahim -- LaBRI/Université de Nantes
```
# Community Gaming Regulation
## Part 2: Permitted gaming activities
```catala-metadata
declaration structure SocialHousie:
data socialPurposeOnly content boolean
data totalValuePrizePerSession content money
data applicationOf2007Licence content boolean
data jackpotPrizeValue content money
data totalValueExpenses content money
data totalInvestmentPerParticipant content money
data investmentReturn content boolean
declaration scope GamingAuthorized:
input socialHousie content SocialHousie
output authorized condition
internal purpose content boolean
internal licence content boolean
internal prizePrice content boolean
internal maxJackpotValue content boolean
internal returnInvestment content boolean
```
### 5 Housie or bingo
#### (3) Social housie
Social housie is a permitted gaming activity for the purposes of section 10 of
the Act if the following requirements are complied with—
(a) the gaming activity is conducted solely for social purposes,
```catala
scope GamingAuthorized :
definition purpose equals socialHousie.socialPurposeOnly
```
(b) the gaming activity is not conducted on premises to which a licence
under theLiquor Act 2007 relates,
```catala
scope GamingAuthorized :
definition licence equals not socialHousie.applicationOf2007Licence
```
(c) except as provided by paragraph (d), the total value of all of the
available prizes for 1 session of the gaming activity does not exceed $40,
```catala
scope GamingAuthorized :
definition prizePrice equals socialHousie.totalValuePrizePerSession <= $40
```
(d) if 1 or more individual prizes are not won, the value of any jackpot prize
does not exceed $200,
```catala
scope GamingAuthorized :
definition maxJackpotValue equals socialHousie.jackpotPrizeValue <= $200
```
(e) the total amount invested by participants in a session of the gaming
activity,after the costs of prizes and expenses of conducting the session are
deducted,is returned to participants.
```catala
scope GamingAuthorized :
definition returnInvestment equals socialHousie.investmentReturn
rule authorized under condition
purpose and licence and prizePrice and maxJackpotValue and returnInvestment
consequence fulfilled
```

View File

@ -1,107 +0,0 @@
```catala
# Copyright © Aïda Ibrahim and Hugo Gimbert -- LaBRI/CNRS/Université de Bordeaux/Université de Nantes
```
> Include: ../nsw_art_union.catala_en
## Test1
```catala
declaration scope Test1:
my_gaming scope GamingAuthorized
scope Test1:
definition
my_gaming.artUnion
equals
ArtUnion {
-- grossProceeds: $50000
-- typeOrg: NonProfit
-- proceedsToBenefitingOrg: $25000
-- totalValueOfThePrizes: $45000
-- maxAmountMoneyAsSeparatePrize: $100
-- holdsAuthority: true
}
assertion my_gaming.authorized = true
```
```catala-test-inline
$ catala Interpret -s Test1
[RESULT] Computation successful!
```
## Test2
```catala
declaration scope Test2:
my_gaming scope GamingAuthorized
scope Test2:
definition
my_gaming.artUnion
equals
ArtUnion {
-- grossProceeds: $50000
-- typeOrg: Charitable
-- proceedsToBenefitingOrg: $5000
-- totalValueOfThePrizes: $15000
-- maxAmountMoneyAsSeparatePrize: $1000
-- holdsAuthority: true
}
assertion my_gaming.authorized = false
```
```catala-test-inline
$ catala Interpret -s Test2
[RESULT] Computation successful!
```
## Test3
```catala
declaration scope Test3:
my_gaming scope GamingAuthorized
scope Test3:
definition
my_gaming.artUnion
equals
ArtUnion {
-- grossProceeds: $15000
-- typeOrg: Charitable
-- proceedsToBenefitingOrg: $6000
-- totalValueOfThePrizes: $30500
-- maxAmountMoneyAsSeparatePrize: $0
-- holdsAuthority: true
}
assertion my_gaming.authorized = true
```
```catala-test-inline
$ catala Interpret -s Test3
[RESULT] Computation successful!
```
## Test4
```catala
declaration scope Test4:
my_gaming scope GamingAuthorized
scope Test4:
definition
my_gaming.artUnion
equals
ArtUnion {
-- grossProceeds: $20000
-- typeOrg: Charitable
-- proceedsToBenefitingOrg: $6000
-- totalValueOfThePrizes: $1500
-- maxAmountMoneyAsSeparatePrize: $0
-- holdsAuthority: false
}
assertion my_gaming.authorized = false
```
```catala-test-inline
$ catala Interpret -s Test4
[RESULT] Computation successful!
```

View File

@ -1,111 +0,0 @@
```catala
# Copyright © Aïda Ibrahim and Hugo Gimbert -- LaBRI/CNRS/Université de Bordeaux/Université de Nantes
```
> Include: ../nsw_charity_housie.catala_en
## Test1
```catala
declaration scope Test1:
my_gaming scope GamingAuthorized
scope Test1:
definition
my_gaming.charityHousie
equals
CharityHousie {
-- typeOrg: Charitable
-- grossProceeds: $200
-- totalValueOfThePrizes: $10
-- totalValueOfExpenses: $10
-- maxTicketsPerParticipant: 5
-- proceedsToBenefitingOrganisation: $80
}
assertion my_gaming.authorized = true
```
```catala-test-inline
$ catala Interpret -s Test1
[RESULT] Computation successful!
```
## Test2
```catala
declaration scope Test2:
my_gaming scope GamingAuthorized
scope Test2:
definition
my_gaming.charityHousie
equals
CharityHousie {
-- typeOrg: Charitable
-- grossProceeds: $200
-- totalValueOfThePrizes: $200
-- totalValueOfExpenses: $10
-- maxTicketsPerParticipant: 5
-- proceedsToBenefitingOrganisation: $0
}
assertion my_gaming.authorized = false
```
```catala-test-inline
$ catala Interpret -s Test2
[RESULT] Computation successful!
```
## Test3
```catala
declaration scope Test3:
my_gaming scope GamingAuthorized
scope Test3:
definition
my_gaming.charityHousie
equals
CharityHousie {
-- typeOrg: Charitable
-- grossProceeds: $400
-- totalValueOfThePrizes: $10
-- totalValueOfExpenses: $10
-- maxTicketsPerParticipant: 5
-- proceedsToBenefitingOrganisation: $100
}
assertion my_gaming.authorized = true
```
```catala-test-inline
$ catala Interpret -s Test3
[RESULT] Computation successful!
```
## Test4
```catala
declaration scope Test4:
my_gaming scope GamingAuthorized
scope Test4:
definition
my_gaming.charityHousie
equals
CharityHousie {
-- typeOrg: Charitable
-- grossProceeds: $200
-- totalValueOfThePrizes: $1000
-- totalValueOfExpenses: $10
-- maxTicketsPerParticipant: 5
-- proceedsToBenefitingOrganisation: $80
}
assertion my_gaming.authorized = false
```
```catala-test-inline
$ catala Interpret -s Test4
[RESULT] Computation successful!
```

View File

@ -1,134 +0,0 @@
```catala
# Copyright © Aïda Ibrahim and Hugo Gimbert -- LaBRI/CNRS/Université de Bordeaux/Université de Nantes
```
> Include: ../nsw_club_bingo.catala_en
## Test1
```catala
declaration scope Test1:
my_gaming scope GamingAuthorized
scope Test1:
definition
my_gaming.clubBingo
equals
ClubBingo {
-- registeredClub: true
-- totalValuePrizePerGame: $60
-- bonusPrizeMaxValue: $5
-- bonusPrizeOffered: true
-- prizeContent: true
}
assertion my_gaming.authorized = false
```
```catala-test-inline
$ catala Interpret -s Test1
[RESULT] Computation successful!
```
## Test2
```catala
declaration scope Test2:
my_gaming scope GamingAuthorized
scope Test2:
definition
my_gaming.clubBingo
equals
ClubBingo {
-- registeredClub: true
-- totalValuePrizePerGame: $60
-- bonusPrizeMaxValue: $5
-- bonusPrizeOffered: true
-- prizeContent: false
}
assertion my_gaming.authorized = true
```
```catala-test-inline
$ catala Interpret -s Test2
[RESULT] Computation successful!
```
## Test3
```catala
declaration scope Test3:
my_gaming scope GamingAuthorized
scope Test3:
definition
my_gaming.clubBingo
equals
ClubBingo {
-- registeredClub: false
-- totalValuePrizePerGame: $60
-- bonusPrizeMaxValue: $5
-- bonusPrizeOffered: true
-- prizeContent: false
}
assertion my_gaming.authorized = false
```
```catala-test-inline
$ catala Interpret -s Test3
[RESULT] Computation successful!
```
## Test4
```catala
declaration scope Test4:
my_gaming scope GamingAuthorized
scope Test4:
definition
my_gaming.clubBingo
equals
ClubBingo {
-- registeredClub: false
-- totalValuePrizePerGame: $80
-- bonusPrizeMaxValue: $10
-- bonusPrizeOffered: true
-- prizeContent: true
}
assertion my_gaming.authorized = false
```
```catala-test-inline
$ catala Interpret -s Test4
[RESULT] Computation successful!
```
## Test5
```catala
declaration scope Test5:
my_gaming scope GamingAuthorized
scope Test5:
definition
my_gaming.clubBingo
equals
ClubBingo {
-- registeredClub: true
-- totalValuePrizePerGame: $60
-- bonusPrizeMaxValue: $100
-- bonusPrizeOffered: true
-- prizeContent: false
}
assertion my_gaming.authorized = false
```
```catala-test-inline
$ catala Interpret -s Test5
[RESULT] Computation successful!
```

View File

@ -1,98 +0,0 @@
```catala
# Copyright © Aïda Ibrahim and Hugo Gimbert -- LaBRI/CNRS/Université de Bordeaux/Université de Nantes
```
> Include: ../nsw_draw_lottery.catala_en
## Test1
```catala
declaration scope Test1:
my_gaming scope GamingAuthorized
scope Test1:
definition
my_gaming.drawLottery
equals
DrawLottery {
-- typeOrg: NonProfit
-- grossProceeds: $3000
-- proceedsToBenefitingOrg: $1500
-- totalValueOfThePrizes: $4000
}
assertion my_gaming.authorized = true
```
```catala-test-inline
$ catala Interpret -s Test1
[RESULT] Computation successful!
```
## Test2
```catala
declaration scope Test2:
my_gaming scope GamingAuthorized
scope Test2:
definition
my_gaming.drawLottery
equals
DrawLottery {
-- typeOrg: NonProfit
-- grossProceeds: $3000
-- proceedsToBenefitingOrg: $500
-- totalValueOfThePrizes: $4000
}
assertion my_gaming.authorized = false
```
```catala-test-inline
$ catala Interpret -s Test2
[RESULT] Computation successful!
```
## Test3
```catala
declaration scope Test3:
my_gaming scope GamingAuthorized
scope Test3:
definition
my_gaming.drawLottery
equals
DrawLottery {
-- typeOrg: Charitable
-- grossProceeds: $35000
-- proceedsToBenefitingOrg: $25000
-- totalValueOfThePrizes: $44000
}
assertion my_gaming.authorized = false
```
```catala-test-inline
$ catala Interpret -s Test3
[RESULT] Computation successful!
```
## Test4
```catala
declaration scope Test4:
my_gaming scope GamingAuthorized
scope Test4:
definition
my_gaming.drawLottery
equals
DrawLottery {
-- typeOrg: Charitable
-- grossProceeds: $3500
-- proceedsToBenefitingOrg: $2500
-- totalValueOfThePrizes: $400
}
assertion my_gaming.authorized = true
```
```catala-test-inline
$ catala Interpret -s Test4
[RESULT] Computation successful!
```

View File

@ -1,102 +0,0 @@
```catala
# Copyright © Aïda Ibrahim and Hugo Gimbert -- LaBRI/CNRS/Université de Bordeaux/Université de Nantes
```
> Include: ../nsw_no_draw_lottery.catala_en
## Test1
```catala
declaration scope Test1:
my_gaming scope GamingAuthorized
scope Test1:
definition
my_gaming.noDrawLottery
equals
NoDrawLottery {
-- typeOrg: NonProfit
-- grossProceeds: $3000
-- proceedsToBenefitingOrg: $1500
-- totalValueOfThePrizes: $4000
-- maxTickets: 2500
}
assertion my_gaming.authorized = true
```
```catala-test-inline
$ catala Interpret -s Test1
[RESULT] Computation successful!
```
## Test2
```catala
declaration scope Test2:
my_gaming scope GamingAuthorized
scope Test2:
definition
my_gaming.noDrawLottery
equals
NoDrawLottery {
-- typeOrg: Charitable
-- grossProceeds: $3000
-- proceedsToBenefitingOrg: $500
-- totalValueOfThePrizes: $4000
-- maxTickets: 2500
}
assertion my_gaming.authorized = false
```
```catala-test-inline
$ catala Interpret -s Test2
[RESULT] Computation successful!
```
## Test3
```catala
declaration scope Test3:
my_gaming scope GamingAuthorized
scope Test3:
definition
my_gaming.noDrawLottery
equals
NoDrawLottery {
-- typeOrg: ProfitOrg
-- grossProceeds: $2000
-- proceedsToBenefitingOrg: $1500
-- totalValueOfThePrizes: $4000
-- maxTickets: 2500
}
assertion my_gaming.authorized = false
```
```catala-test-inline
$ catala Interpret -s Test3
[RESULT] Computation successful!
```
## Test4
```catala
declaration scope Test4:
my_gaming scope GamingAuthorized
scope Test4:
definition
my_gaming.noDrawLottery
equals
NoDrawLottery {
-- typeOrg: Charitable
-- grossProceeds: $9000
-- proceedsToBenefitingOrg: $6000
-- totalValueOfThePrizes: $4999
-- maxTickets: 2500
}
assertion my_gaming.authorized = true
```
```catala-test-inline
$ catala Interpret -s Test4
[RESULT] Computation successful!
```

View File

@ -1,95 +0,0 @@
```catala
# Copyright © Aïda Ibrahim and Hugo Gimbert -- LaBRI/CNRS/Université de Bordeaux/Université de Nantes
```
> Include: ../nsw_progressive_lottery.catala_en
## Test1
```catala
declaration scope Test1:
my_gaming scope GamingAuthorized
scope Test1:
definition
my_gaming.progressiveLottery
equals
ProgressiveLottery {
-- maxAmountPayable: $6000
-- totalValueOfThePrizes: $31000
-- holdsAuthority: true
}
assertion my_gaming.authorized = true
```
```catala-test-inline
$ catala Interpret -s Test1
[RESULT] Computation successful!
```
## Test2
```catala
declaration scope Test2:
my_gaming scope GamingAuthorized
scope Test2:
definition
my_gaming.progressiveLottery
equals
ProgressiveLottery {
-- maxAmountPayable: $6000
-- totalValueOfThePrizes: $5000
-- holdsAuthority: false
}
assertion my_gaming.authorized = true
```
```catala-test-inline
$ catala Interpret -s Test2
[RESULT] Computation successful!
```
## Test3
```catala
declaration scope Test3:
my_gaming scope GamingAuthorized
scope Test3:
definition
my_gaming.progressiveLottery
equals
ProgressiveLottery {
-- maxAmountPayable: $9000
-- totalValueOfThePrizes: $10000
-- holdsAuthority: false
}
assertion my_gaming.authorized = false
```
```catala-test-inline
$ catala Interpret -s Test3
[RESULT] Computation successful!
```
## Test4
```catala
declaration scope Test4:
my_gaming scope GamingAuthorized
scope Test4:
definition
my_gaming.progressiveLottery
equals
ProgressiveLottery {
-- maxAmountPayable: $0
-- totalValueOfThePrizes: $31000
-- holdsAuthority: false
}
assertion my_gaming.authorized = false
```
```catala-test-inline
$ catala Interpret -s Test4
[RESULT] Computation successful!
```

View File

@ -1,183 +0,0 @@
```catala
# Copyright © Aïda Ibrahim and Hugo Gimbert -- LaBRI/CNRS/Université de Bordeaux/Université de Nantes
```
> Include: ../nsw_social_housie.catala_en
## Test1
```catala
declaration scope Test1:
context my_gaming scope GamingAuthorized
scope Test1:
definition
my_gaming.socialHousie
equals
SocialHousie {
-- socialPurposeOnly: true
-- totalValuePrizePerSession: $200000
-- applicationOf2007Licence: false
-- jackpotPrizeValue: $0
-- totalValueExpenses: $0
-- totalInvestmentPerParticipant: $0
-- investmentReturn: true
}
assertion my_gaming.authorized = false
```
```catala-test-inline
$ catala Interpret -s Test1
[ERROR]
Syntax error at token "scope"
Message: expected either 'condition', or 'content' followed by the expected variable type
You could have written : "condition",
or "content"
Error token:
┌─⯈ examples/NSW_community_gaming/tests/test_nsw_social_housie.catala_en:11.21-11.26:
└──┐
11 │ context my_gaming scope GamingAuthorized
│ ‾‾‾‾‾
Last good token:
┌─⯈ examples/NSW_community_gaming/tests/test_nsw_social_housie.catala_en:11.11-11.20:
└──┐
11 │ context my_gaming scope GamingAuthorized
│ ‾‾‾‾‾‾‾‾‾
#return code 123#
```
## Test2
```catala
declaration scope Test2:
my_gaming scope GamingAuthorized
scope Test2:
definition
my_gaming.socialHousie
equals
SocialHousie {
-- socialPurposeOnly: true
-- totalValuePrizePerSession: $20
-- applicationOf2007Licence: false
-- jackpotPrizeValue: $140
-- totalValueExpenses: $140
-- totalInvestmentPerParticipant: $0
-- investmentReturn: true
}
assertion my_gaming.authorized
```
```catala-test-inline
$ catala Interpret -s Test2
[ERROR]
Syntax error at token "scope"
Message: expected either 'condition', or 'content' followed by the expected variable type
You could have written : "condition",
or "content"
Error token:
┌─⯈ examples/NSW_community_gaming/tests/test_nsw_social_housie.catala_en:11.21-11.26:
└──┐
11 │ context my_gaming scope GamingAuthorized
│ ‾‾‾‾‾
Last good token:
┌─⯈ examples/NSW_community_gaming/tests/test_nsw_social_housie.catala_en:11.11-11.20:
└──┐
11 │ context my_gaming scope GamingAuthorized
│ ‾‾‾‾‾‾‾‾‾
#return code 123#
```
## Test3
```catala
declaration scope Test3:
my_gaming scope GamingAuthorized
scope Test3:
definition
my_gaming.socialHousie
equals
SocialHousie {
-- socialPurposeOnly: true
-- totalValuePrizePerSession: $2
-- applicationOf2007Licence: false
-- jackpotPrizeValue: $345
-- totalValueExpenses: $0
-- totalInvestmentPerParticipant: $0
-- investmentReturn: true
}
assertion not my_gaming.authorized
```
```catala-test-inline
$ catala Interpret -s Test3
[ERROR]
Syntax error at token "scope"
Message: expected either 'condition', or 'content' followed by the expected variable type
You could have written : "condition",
or "content"
Error token:
┌─⯈ examples/NSW_community_gaming/tests/test_nsw_social_housie.catala_en:11.21-11.26:
└──┐
11 │ context my_gaming scope GamingAuthorized
│ ‾‾‾‾‾
Last good token:
┌─⯈ examples/NSW_community_gaming/tests/test_nsw_social_housie.catala_en:11.11-11.20:
└──┐
11 │ context my_gaming scope GamingAuthorized
│ ‾‾‾‾‾‾‾‾‾
#return code 123#
```
## Test4
```catala
declaration scope Test4:
my_gaming scope GamingAuthorized
scope Test4:
definition
my_gaming.socialHousie
equals
SocialHousie {
-- socialPurposeOnly: true
-- totalValuePrizePerSession: $40
-- applicationOf2007Licence: false
-- jackpotPrizeValue: $160
-- totalValueExpenses: $240
-- totalInvestmentPerParticipant: $60
-- investmentReturn: true
}
assertion my_gaming.authorized
```
```catala-test-inline
$ catala Interpret -s Test4
[ERROR]
Syntax error at token "scope"
Message: expected either 'condition', or 'content' followed by the expected variable type
You could have written : "condition",
or "content"
Error token:
┌─⯈ examples/NSW_community_gaming/tests/test_nsw_social_housie.catala_en:11.21-11.26:
└──┐
11 │ context my_gaming scope GamingAuthorized
│ ‾‾‾‾‾
Last good token:
┌─⯈ examples/NSW_community_gaming/tests/test_nsw_social_housie.catala_en:11.11-11.20:
└──┐
11 │ context my_gaming scope GamingAuthorized
│ ‾‾‾‾‾‾‾‾‾
#return code 123#
```

View File

@ -1,143 +0,0 @@
# Catala examples
This directory contains examples of Catala programs. It is highly recommended
to locate your own Catala programs in this directory, since programs in this
directory will receive first-class support during the alpha and beta stage
of the Catala programming language development.
<strong>[Browse examples online »](https://catala-lang.org/en/examples)</strong>
## List of examples
- `allocations_familiales/`: computation of the French family benefits, based
on the _Code de la sécurité sociale_.
- `aides_logement`: computation of the French housing benefits, based on the
_Code de la construction et de l'habitation_. This case study is the biggest and
most ambitious for Catala so far.
- `tutorial_<en/fr>/`: Catala language tutorial for developers of tech-savvy lawyers.
The tutorial is written like a piece of legislation that gets annotated by
Catala snippets.
- `us_tax_code/`: contains the Catala formalization of several sections of the
US Tax Code.
## Building and running examples
Building and running examples is done via Makefiles. Each example directory
contains its own Makefile, which includes `Makefile.common.mk`. This common
Makefiles defines a list of targets that call the Catala compiler with the
right options. Each of these targets can be called from the root of the
repository with:
make -C examples/<directory of example> <name of target>
The `<name of target>` can be replaced with the following (we assume an example
file `examples/foo/foo.catala_en`) list.
- `foo.run`: interprets the Catala program contained in `foo.catala_en`. Note
that you have to pass in the scope that you want to interpret via the `SCOPE`
Makefile variable (`SCOPE=FooScope make -C examples/foo foo.run`).
- `foo.tex`: builds the LaTeX literate programming output from the Catala program
- `foo.pdf`: compiles `foo.tex` using `latexmk`
- `foo.html`: builds the HTML literate programming output from the Catala program
- `foo.spell.ok`: runs aspell on the file, given the `whitelist.<language>` files.
When invoking any of these targets, additional options to the Catala compiler
can be passed using the `CATALA_OPTS` Makefile variable.
Important
: Before trying to generates LaTex or PDF files:
1. don't forget to run `make pygments`,
2. and you need to have the font
[Marianne](https://gouvfr.atlassian.net/wiki/spaces/DB/pages/223019527/Typographie+-+Typography)
installed in your machine.
> Note: the OCaml, Javascript and Python artifacts that are generated here and
> used in ../french_law are generated using `dune` rules instead. See the
> examples in `aides_logement/dune` and `allocations_familiales/dune`. This
> allows the compilation of `french_law` to be streamlined from the compilation
> of the Catala compiler itself, and without polluting the source tree.
## Testing examples
Unit testing is important, and we encourage Catala developers to write lots
of tests for their programs. Again, the Makefile system provides a way to
collect tests into a regression test suite.
In order to enjoy the benefits of this system, you have to create a `tests/`
directory in your examples directory, for instance `examples/foo/tests`. Then,
create a test file `foo_tests.catala_en` inside that directory.
Inside `foo_tests.catala_en`, declare one ore more test scopes. Then, you can
provide the expected output for the interpretation of these scopes or the
compilation of the whole program using the standard expected by `clerk test`:
enter `make help_clerk` from the root of the Catala repository to know more.
Once your tests are written, then will automatically be added to the regression
suite executed using:
# From the root of the Catala repository
make test_examples
# From the examples/ folder
make pass_all_tests
You can isolate a part of the regression suite by invoking:
make -C examples foo/tests/foo_tests.catala_en
## Adding an example
This section describes what to do to setup a working directory for a new Catala
example, as well as the development cycle. Let us suppose that you want to
create a new example named `foo`.
First, follow the instructions of [the installation readme](../INSTALL.md) to
get the compiler up and working up to `make build`. You can also set up the
syntax highlighting for your editor.
Then, create the directory `examples/foo`. In there, create a master source
file `foo.catala_en` (or `foo.catala_fr`, etc. depending on your language)
that will be the root of your Catala program. You can then start programming
in `foo.catala_en`, or split up your example into multiple files. In the later case,
`foo.catala_en` must only contain
something like this:
```markdown
# Master file
> Include: bar.catala_en
```
where `examples/bar.catala_en` is another source file containing code for your
example. Make sure you start by including some content in the source files,
like
```
Hello, world!
```
To build and run the example, create a `Makefile` in `foo/`
with the following contents:
```Makefile
CATALA_LANG=en # or fr/pl if your source code is in French/Polish
SRC=foo.catala_en
include ../Makefile.common.mk
```
The `include` creates automatically all the targets you will need for your example. For instance, after making sure the compiler is built, you can launch
```
make -C examples/foo foo.tex
```
from the repository root to create the LaTeX weaving output of your source
program. `Hello, world!` should appear in `examples/foo/foo.tex`.
Finally, please add a rule for your example in the repository root
`Makefile` in the section "Examples-related rules", following the pattern
for other examples. This will ensure that your example is built every
time the compiler is modified; if a change in the compiler breaks your example,
the authors will be notified and find a solution.

View File

@ -1,19 +0,0 @@
*.aux
*.dvi
*.fdb_latexmk
*.fls
*.log
*.out
*.fls
*.tex
*.pdf
*.html
_minted*
*.toc
*.pyg
*.d
*.new
*.ml
*.py
*.xdv
*.json

View File

@ -1,4 +0,0 @@
CATALA_LANG=fr
SRC=aides_logement.catala_fr
include ../Makefile.common.mk

View File

@ -1,19 +0,0 @@
> Inclusion: prologue.catala_fr
# Code de la construction et de l'habitation
> Inclusion: code_construction_legislatif.catala_fr
> Inclusion: code_construction_reglementaire.catala_fr
> Inclusion: code_sécurité_sociale.catala_fr
> Inclusion: arrete_2019-09-27.catala_fr
> Inclusion: autres_sources.catala_fr
> Inclusion: ../base_mensuelle_allocations_familiales/bmaf.catala_fr
> Inclusion: ../prestations_familiales/prestations_familiales.catala_fr
> Inclusion: archives.catala_fr

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,521 +0,0 @@
# Montants revalorisés de l'allocation de solidarité aux personnes âgées
Les montants de l'allocation de solidarité aux personnes âgées pour
2021 et 2022 n'ont pas fait l'objet de publication législative ou réglementaire.
La raison nous en a été apportée par le bureau BRS de la 6° sous-direction
de la direction du budget le 12/08/2022:
"- Larticle L. 815-4 renvoie à un décret (D. 815-1) la fixation des montants,
en lespèce ceux applicables à compter du 1er janvier 2020 (date de la dernière
revalorisation ayant dérogé au principe de la revalorisation annuelle) ;
- Larticle L. 816-2 prévoit le principe de la revalorisation annuelle au 1er
janvier de chaque année en fonction de linflation, par renvoi à larticle
L. 161-25 ;
- Il nest nul besoin de prendre un décret chaque année en labsence de renvoi
de ce dernier article. Nous prenons une circulaire chaque année à des fins de
clarification des montants applicables, qui na quune valeur interprétative.""
À noter que l'article L161-25 doit être interprété de la manière suivante
pour revaloriser correctement : au 1er janvier de l'année N, on calcule la moyenne
de l'indice des prix hors-tabac d'octobre N-1 à novembre N-2, que l'on divise
par cette même moyenne mais cette fois-ci calculée d'octobre N-2 à novembre N-3.
Cela nous donne le coefficient de revalorisation à appliquer à allocation de
solidarité aux personnes âgées. Cette méthode nous a été précisément confirmée par
le bureau BRS de la 6° sous-direction de la direction du budget le 31/08/2022.
Pour éviter de refaire les calculs de revalorisation en Catala, nous prendrons
comme référence les valeurs de la CNAV rappelées dans des circulaires internes.
## Circulaire de la CNAV 2023-3 du 09/01/2022 "Revalorisation à compter du 1er janvier 2023"
[Lien vers le texte](https://legislation.lassuranceretraite.fr/Pdf/circulaire_cnav_2023_03_09012023.pdf)
Le montant de lAspa sélève, à compter du 1er janvier 2023, à :
Bénéficiaire Montant annuel Montant mensuel
-------------- -------------- ---------------
Personne seule 11 533,02 € 961,08 €
Couple marié 17 905,06 € 1 492,08 €
```catala
# Pas important pour nous
```
Pour prétendre à cette allocation non contributive, les plafonds de ressources sont fixés à:
Bénéficiaire Montant annuel Montant mensuel
-------------- -------------- -----------------
Personne seule 11 533,02 € 961,08 €
Couple marié 17 905,06 € 1 492,08 €
```catala
# Uniquement la valeur du plafond individuel est important pour l'éligibilité
# aux APL
champ d'application ÉligibilitéAidesPersonnelleLogement:
définition plafond_individuel_l815_9_sécu sous condition
date_courante >= |2023-01-01|
conséquence égal à 11 533,02 €
```
## Circulaire de la CNAV 2022-3 du 11/01/2022 "Revalorisation à compter du 1er janvier 2022"
[Lien vers le texte](https://legislation.lassuranceretraite.fr/Pdf/circulaire_cnav_2022_03_11012022.pdf)
Le montant de lAspa sélève, à compter du 1er janvier 2022, à :
Bénéficiaire Montant annuel Montant mensuel
-------------- -------------- ---------------
Personne seule 11 001,44 € 916,78 €
Couple marié 17 079,77 € 1 423,31 €
```catala
# Pas important pour nous
```
Pour prétendre à cette allocation non contributive, les plafonds de ressources sont fixés à:
Bénéficiaire Montant annuel Montant mensuel
-------------- -------------- -----------------
Personne seule 11 001,44€ 916,78 €
Couple marié 17 079,77 € 1 423,31 €
```catala
# Uniquement la valeur du plafond individuel est important pour l'éligibilité
# aux APL
champ d'application ÉligibilitéAidesPersonnelleLogement:
définition plafond_individuel_l815_9_sécu sous condition
date_courante >= |2022-01-01| et
date_courante < |2023-01-01|
conséquence égal à 11 001,44€
```
## Circulaire de la CNAV 2021-1 du 11/01/2021 "Revalorisation à compter du 1er janvier 2021"
[Lien vers le texte](https://legislation.lassuranceretraite.fr/Pdf/circulaire_cnav_2021_01_11012021.pdf)
Le montant de lAspa sélève, à compter du 1er janvier 2022, à :
Bénéficiaire Montant annuel Montant mensuel
-------------- -------------- ---------------
Personne seule 10 881,75 € 906,81 €
Couple marié 16 893,94 € 1 407,82 €
```catala
# Pas important pour nous
```
Pour prétendre à cette allocation non contributive, les plafonds de ressources sont fixés à:
Bénéficiaire Montant annuel Montant mensuel
-------------- -------------- -----------------
Personne seule 10 881,75 € 906,81 €
Couple marié 16 893,94 € 1 407,82 €
```catala
# Uniquement la valeur du plafond individuel est important pour l'éligibilité
# aux APL
champ d'application ÉligibilitéAidesPersonnelleLogement:
définition plafond_individuel_l815_9_sécu sous condition
date_courante >= |2021-01-01| et
date_courante < |2022-01-01|
conséquence égal à 10 881,75€
```
# Ordonnance n° 96-50 du 24 janvier 1996 relative au remboursement de la dette sociale
## Chapitre II : Des contributions pour le remboursement de la dette sociale.
### Article 14 | LEGIARTI000038834962
I.-Il est institué une contribution assise sur les revenus d'activité et de
remplacement mentionnés à la section 1 du chapitre 4 du titre 3 du livre 1
du code de la sécurité sociale perçus par les personnes physiques désignées
à ce même article. Cette contribution est soumise aux conditions prévues aux
articles L. 136-1-1 à L. 136-4 du même code.
Elle est due jusqu'à l'extinction des missions prévues à l'article 2 de la
présente ordonnance.
II.-Lorsqu'ils n'entrent pas dans le champ d'application du I, sont également
soumis à la contribution dans les mêmes conditions et selon les mêmes
modalités :
7° Les aides personnelles au logement mentionnées à l'article L. 821-1 du
code de la construction et de l'habitation ;
```catala
champ d'application ContributionsSocialesAidesPersonnelleLogement:
définition montant de aide_finale sous condition
date_courante >= |2018-09-01|
conséquence égal à
aide_finale * taux_crds
assertion exonéré_csg # Voir L136-1-3 code de la sécurité sociale
```
8° Les prestations visées à l'article L. 511-1 et au chapitre V du titre V
du livre VII du code de la sécurité sociale, à l'exception de l'allocation
d'éducation de l'enfant handicapé ;
9° La prime d'activité mentionnée à l' article L. 841-1 du code de la sécurité
sociale .
III.-La contribution due sur les prestations visées aux 7°, 8° et 9° du II est
précomptée par l'organisme débiteur dans les conditions prévues à l' article
L. 131-1 du code de la sécurité sociale .
La contribution prévue au I est recouvrée et contrôlée dans les conditions et
sous les garanties et sanctions visées à l'article L. 136-5 du code de la
sécurité sociale.
IV.-Les prestations visées au 8° du II, à l'exception de l'allocation logement
mentionnée aux articles L. 542-1 et L. 755-21 du code de la sécurité sociale,
ne sont assujetties à la contribution qu'à compter du 1er janvier 1997.
NOTA :
Conformément aux dispositions de l'article 16 de l'ordonnance n° 2018-474 du
12 juin 2018, les dispositions de la présente ordonnance s'appliquent aux
cotisations et contributions dues pour les périodes courant à compter du
1er septembre 2018.
### Article 19 | LEGIARTI000041466982
Le taux des contributions instituées par les articles 14 à 17 est fixé à 0,5 %.
```catala
champ d'application ContributionsSocialesAidesPersonnelleLogement:
définition taux_crds sous condition date_courante >= |2020-01-01|
conséquence égal à 0,5%
```
Le taux de la contribution instituée au I de l'article 18 est fixé à 2,2 %.
Le taux de la contribution instituée au III de l'article 18 est fixé à 3 %.
NOTA :
Conformément aux dispositions du VIII de l'article 138 de la loi n° 2019-486 du
22 mai 2019, ces dispositions entrent en vigueur le 1er janvier 2020.
Conformément au A du VI de l'article 28 de la loi n° 2019-1479 du 28 décembre 2019,
ces dispositions entrent en vigueur le 1er janvier 2020.
# Conseil d'État, 5ème - 4ème chambres réunies, 21/07/2017, 398563 | CETATEXT000035260342
Vu la procédure suivante :
M. A...B...a demandé au tribunal administratif de Rennes d'annuler la décision
du 15 octobre 2014 par laquelle la caisse d'allocations familiales les
Côtes-d'Armor, après avis de la commission de recours amiable, a refusé de
lui accorder le bénéfice de l'aide personnalisée au logement. Par un jugement
n° 1405338 du 4 février 2016, le tribunal administratif a fait droit à cette
demande.
Par un pourvoi sommaire et un mémoire complémentaire, enregistrés au secrétariat
du contentieux du Conseil d'Etat le 6 avril et le 5 juillet 2016, le ministre
du logement et de l'habitat durable demande au Conseil d'Etat d'annuler ce
jugement.
Vu les autres pièces du dossier ;
Vu :
- le code civil ;
- le code de la construction et de l'habitation ;
- le code de la sécurité sociale ;
- le code de justice administrative ;
Après avoir entendu en séance publique :
- le rapport de M. Alain Seban, conseiller d'Etat,
- les conclusions de M. Nicolas Polge, rapporteur public.
1. Considérant qu'il ressort des pièces du dossier soumis au juge du fond que
M. B... a sollicité de la caisse d'allocations familiales des Côtes d'Armor le
bénéfice de l'aide personnalisée au logement ; que cette demande a été rejetée
par une décision du 16 mai 2014, confirmée sur recours amiable le 15 octobre
2014 ; que le ministre du logement et de l'habitat durable se pourvoit en
cassation contre le jugement du 4 février 2016 par lequel le magistrat délégué
par le président du tribunal administratif de Rennes a annulé cette décision
au motif que la caisse d'allocations familiales n'avait pu légalement se fonder
sur la circonstance que la fille de l'intéressé résidait alternativement chez
ses deux parents séparés pour refuser de la prendre en compte pour l'application
du barème de l'aide ;
2. Considérant que l'article L. 351-3 du code de la construction et de
l'habitation dispose que l'aide personnalisée au logement est calculée en
fonction d'un barème qui prend notamment en compte " la situation de famille
du demandeur de l'aide occupant le logement et le nombre de personnes à charge
vivant habituellement au foyer " ; qu'aux termes de l'article R. 351-8 du même
code : " Sont considérés comme personnes à charge au sens des titres III à V du
présent livre, sous réserve qu'ils vivent habituellement au foyer : /
1° Les enfants ouvrant droit aux prestations familiales (...) " ;
3. Considérant, d'une part, qu'aux termes du deuxième alinéa de l'article
L. 521-2 du code de la sécurité sociale : " En cas de résidence alternée de
l'enfant au domicile de chacun des parents telle que prévue à l'article 373-2-9
du code civil, mise en oeuvre de manière effective, (...) la charge de l'enfant
pour le calcul des allocations familiales est partagée par moitié entre les deux
parents soit sur demande conjointe des parents, soit si les parents sont en
désaccord sur la désignation de l'allocataire " ; qu'il résulte de ces
dispositions que les enfants en situation de résidence alternée sont pris en
compte pour le calcul des allocations familiales ; qu'ainsi, le ministre n'est
pas fondé à soutenir qu'un " principe d'unicité de l'allocataire " s'opposerait
à la prise en compte de ces enfants pour la détermination du montant de l'aide
personnalisée au logement ;
4. Considérant, d'autre part, que, pour l'application des articles L. 351-3 et
R. 351-8 du code de la construction et de l'habitation cités ci-dessus, les
enfants en situation de garde alternée doivent être regardés comme vivant
habituellement au foyer de chacun de leurs deux parents ; qu'ils doivent,
par suite, être pris en compte pour le calcul de l'aide personnalisée au
logement sollicitée, le cas échéant, par chacun des deux parents, qui ne peut
toutefois prétendre à une aide déterminée sur cette base qu'au titre de la
période cumulée pendant laquelle il accueille l'enfant à son domicile au cours
de l'année ;
```catala
champ d'application CalculetteAidesAuLogementGardeAlternée:
définition aide_finale égal à
# TODO juridique: discuter des effets du choix de la fonction de traitement.
# Faut-il prendre calculette.traitement_aide_finale ou
# calculette_sans_garde_alternée.traitement_aide_finale ?
calculette.traitement_aide_finale de (
calculette_sans_garde_alternée.aide_finale_formule + (
si nombre de coefficents_enfants_garde_alternée_pris_en_compte = 0 alors
0 €
sinon
# On retire la part des allocations logement dues aux enfants
# en garde alternée à hauteur des coefficients prenant en compte la
# période cumulée pendant laquelle le ménage accueille l'enfant
# à domicile.
(calculette.aide_finale_formule -
calculette_sans_garde_alternée.aide_finale_formule) *
((somme décimal de
coefficents_enfants_garde_alternée_pris_en_compte) /
(décimal de
nombre de coefficents_enfants_garde_alternée_pris_en_compte))))
```
5. Considérant qu'il résulte de ce qui précède que le ministre du logement et
de l'habitat durable n'est pas fondé à demander l'annulation du jugement qu'il
attaque ;
D E C I D E :
--------------
Article 1er : Le pourvoi du ministre du logement et de l'habitat durable est rejeté.
Article 2 : La présente décision sera notifiée au ministre de la cohésion
des territoires, à M. A... B...et à la caisse d'allocations familiales des Côtes-d'Armor.
ECLI:FR:CECHR:2017:398563.20170721
# Règlement (CE) n°2866/98 du conseil du 31 décembre 1998 concernant les taux de conversion entre l'euro et les monnaies des États membres adoptant l'euro
## Article premier
1 euro = 6,55957 francs français
```catala
champ d'application CalculAidePersonnaliséeLogementAccessionPropriété:
définition taux_francs_vers_euros égal à (1,0 / 6,55957)
champ d'application CalculAllocationLogementAccessionPropriété:
définition taux_francs_vers_euros égal à (1,0 / 6,55957)
```
# Décret n° 2021-1750 du 21 décembre 2021 portant diverses mesures sur les aides personnelles au logement et relatif aux aides personnelles au logement à Saint-Pierre-et-Miquelon
## Article 6 | JORFARTI000044547640
Les dispositions du présent décret s'appliquent aux contributions et aux prestations dues
à compter du 1er janvier 2022, sous réserve du 2° et 3° de l'article 1er et du 3° de l'article
6 quater du décret n° 2002-120 du 30 janvier 2002 susvisé dans sa rédaction résultant de l'article
3 qui entrent en vigueur le 1er janvier 2023 ainsi que des dispositions de l'article 7.
## Article 7 | JORFARTI000044547643
Par dérogation aux dispositions de l'article D. 823-9 du code de la construction et de l'habitation
issues de l'article 2 du présent décret, pour les ménages bénéficiaires des aides personnelles au
logement à Saint-Pierre-et-Miquelon mentionnées à cet article, le montant mensuel de l'aide due au
titre du mois de janvier 2022 jusqu'au mois de décembre 2025 est calculé selon la formule suivante :
ALspm = ALt × (1 - (2026-n) / 8)
```catala
# Attention, la formule initiale était fausse (manque un "-" après le "1"),
# rectifié par https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000044807163 et
# c'est la version rectifiée que nous prenons en compte.
```
Dans laquelle :
1° « ALspm » est l'aide mensuelle due aux bénéficiaires de l'aide personnelle au logement à
Saint-Pierre-et-Miquelon au titre du mois considéré, entre janvier 2022 et décembre 2025 ;
2° « ALt » est l'aide mensuelle théorique calculée en application des dispositions du livre VIII du
code précité, le cas échéant adaptées selon les dispositions de l'article 2 du présent décret ;
3° « n » correspond à l'année au titre de laquelle l'aide est due. Les dispositions du présent article
peuvent être modifiées par décret.
```catala
déclaration montée_en_charge_saint_pierre_miquelon contenu argent dépend de
aide_finale contenu argent,
résidence contenu Collectivité,
date_courante contenu date
égal à
si
résidence sous forme SaintPierreEtMiquelon et
date_courante >= |2022-01-01| et
date_courante <= |2025-12-31|
alors
aide_finale * (1,0 -
(décimal de (2026 - accès_année de date_courante) / 8,0))
sinon
aide_finale
# D'après L860-3 CCH, les habitants de Saint-Pierre et Miquelon n'ont
# droit qu'à l'allocation logement et pas à l'aide au logement. Donc on
# ne modifie que les champs d'applications relatifs à l'allocation logement,
# dans les trois secteurs. À l'exception du secteur locatif où le calcul de
# l'allocation logement passe par le barème de l'aide personnalisée au logement,
# et où il faut donc modifier le champ d'application afférent.
champ d'application CalculAidePersonnaliséeLogementLocatif:
définition traitement_aide_finale de aide_finale
état montée_en_charge_saint_pierre_miquelon
égal à
soit aide_finale égal à traitement_aide_finale de aide_finale dans
montée_en_charge_saint_pierre_miquelon de
aide_finale, résidence, date_courante
champ d'application CalculAllocationLogementFoyer:
définition traitement_aide_finale de aide_finale
état montée_en_charge_saint_pierre_miquelon
égal à
soit aide_finale égal à traitement_aide_finale de aide_finale dans
montée_en_charge_saint_pierre_miquelon de
aide_finale, résidence, date_courante
champ d'application CalculAllocationLogementAccessionPropriété:
définition traitement_aide_finale de aide_finale
état montée_en_charge_saint_pierre_miquelon
égal à
soit aide_finale égal à traitement_aide_finale de aide_finale dans
montée_en_charge_saint_pierre_miquelon de
aide_finale, résidence, date_courante
```
# Code général des collectivités territoriales
## Partie législative
### Sixième partie : collectivités d'outre-mer régies par l'article 74 de la constitution
#### Livre IV : Saint-Pierre-et-Miquelon
##### Titre Ier : Dispositions générales
###### Chapitre IV : Compétences
####### Article LO6414-1 | LEGIARTI000006394300
I. La collectivité exerce les compétences dévolues par les lois et
règlements en vigueur aux départements et aux régions, à l'exception de celles
relatives :
1° A la construction et à l'entretien général et technique ainsi qu'au
fonctionnement des collèges et des lycées, à l'accueil, à la restauration et à
l'hébergement dans ces établissements, au recrutement et à la gestion des
personnels techniciens et ouvriers de service exerçant ces missions dans les
collèges et les lycées ;
2° A la construction, à l'aménagement, à l'entretien et à la gestion de la
voirie classée en route nationale ;
3° A la lutte contre les maladies vectorielles ;
4° A la police de la circulation sur le domaine de la collectivité ;
5° Aux bibliothèques régionales et bibliothèques de prêt départementales ;
6° Au financement des moyens des services d'incendie et de secours.
II. La collectivité fixe les règles applicables dans les matières suivantes
:
1° Impôts, droits et taxes ; cadastre ;
```catala
# Ceci signifie que la collectivité de Saint-Pierre-et-Miquelon fixe les
# règles d'imposition des aides au logement. En l'occurrence, elle choisit
# de ne pas l'imposer avec un équivalent de la CRDS. Information confirmée par
# mail de DGALN/DHUP/FE4 du 21/04/2023: "Jattire toutefois votre attention
# sur le fait que la CRDS ne sapplique pas à Saint-Pierre-et-Miquelon."
# En ce qui concerne Saint-Barthélémy et Saint-Martin, les collectivités
# exercent une compétence en matière dimpôts (respectivement article LO 6214-3
# du CGCT I° 1 et article LO 6314-3 du CGCT I° 1) “sans préjudice des règles
# fixées par lEtat, pour Saint-Barthélemy, en matière de cotisations sociales
# et des autres prélèvements destinés au financement de la protection sociale et
# à lamortissement de la dette sociale.” (respectivement article LO 6214-4 du
# CGCT III et article LO 6314-4 du CGCT III). La CRDS sapplique donc bien à
# Saint-Martin et Saint-Barthélémy, pas besoin de coder d'exception pour ces
# territoires.
champ d'application ContributionsSocialesAidesPersonnelleLogement:
exception définition montant de aide_finale sous condition
date_courante >= |2007-02-22| et
lieu sous forme SaintPierreEtMiquelon
conséquence égal à 0 €
```
2° Régime douanier, à l'exclusion des prohibitions à l'importation et à
l'exportation qui relèvent de l'ordre public et des engagements internationaux
de la France et des règles relatives à la recherche, à la constatation des
infractions pénales et à la procédure contentieuse ;
3° Urbanisme ; construction ; habitation ; logement ;
4° Création et organisation des services et des établissements publics de la
collectivité.
Par dérogation au 3°, les autorités de l'Etat délivrent, dans le cadre de la
réglementation applicable à Saint-Pierre-et-Miquelon et après avis du conseil
exécutif, les autorisations ou actes relatifs à l'utilisation et à
l'occupation du sol concernant les constructions, installations ou travaux
réalisés pour le compte de l'Etat et ses établissements publics.
III. Dans les conditions prévues à l'article LO 6461-3 , la collectivité peut
édicter des peines contraventionnelles destinées à réprimer les infractions
pénales aux règles qu'elle édicte dans les matières mentionnées au II.
IV. Dans les conditions prévues à l'article LO 6461-5 , la collectivité peut
adapter les lois et règlements en vigueur localement.
V. 1. Une convention entre l'Etat et la collectivité détermine, aux fins
notamment d'éviter les doubles impositions et de prévenir l'évasion fiscale,
les obligations de la collectivité en matière de communication d'informations
à des fins fiscales. La collectivité transmet à l'Etat toute information utile
pour l'application de sa réglementation relative aux impôts, droits et taxes,
ainsi que pour l'exécution des clauses d'échange de renseignements prévues par
les conventions fiscales conclues par la France avec d'autres Etats ou
territoires.
2. Sans préjudice de l'exercice par la collectivité de sa compétence en
matière d'impôts, droits et taxes, l'Etat peut instituer des taxes
destinées à être perçues à l'occasion de l'exercice des missions d'intérêt
général qui lui incombent dans le cadre de ses compétences.
Une convention conclue entre l'Etat et la collectivité précise les modalités
d'application du présent 2 afin de déterminer les modalités de recouvrement et
de gestion des recettes destinées au financement de la sécurité aérienne.
VI. La réglementation particulière à Saint-Pierre-et-Miquelon relative au
contrôle sanitaire, vétérinaire et phytosanitaire et au fonctionnement des
stations de quarantaine animale ne peut être modifiée qu'après avis du conseil
territorial.

File diff suppressed because it is too large Load Diff

View File

@ -1,418 +0,0 @@
# Code de la sécurité sociale
## Partie législative
### Livre I : Généralités - Dispositions communes à tout ou partie des régimes de base
### Titre III: Titre III : Dispositions communes relatives au financement
#### Chapitre 6 : Contribution sociale généralisée
##### Section 1 : De la contribution sociale sur les revenus d'activité et sur les revenus de remplacement
###### Article L136-1-3 | LEGIARTI000045232415
I.-Ne sont pas assujetties à la contribution sociale prévue à l'article L. 136-1
les prestations sociales suivantes :
1° Les prestations familiales mentionnées aux articles L. 511-1 et L. 755-1 ;
2° La prime d'activité mentionnée à l'article L. 841-1 ;
3° L'allocation aux adultes handicapés prévue à l'article L. 821-1 ;
4° L'allocation de solidarité aux personnes âgées prévue à l'article L. 815-1 et
les allocations mentionnées à l' article 2 de l'ordonnance n° 2004-605 du 24 juin
2004 simplifiant le minimum vieillesse ;
5° L'allocation supplémentaire d'invalidité prévue à l'article L. 815-24 ;
6° Les aides personnelles au logement mentionnées à l'article L. 821-1 du code de
la construction et de l'habitation ;
```catala
# Justifie le fait que ContributionsSocialesAidesPersonnelleLogement ne prenne
# en compte que la CRDS et pas la CSG.
champ d'application ContributionsSocialesAidesPersonnelleLogement:
règle exonéré_csg rempli
```
7° L'allocation personnalisée d'autonomie prévue à l' article L. 232-1 du code de
l'action sociale et des familles ;
8° Le revenu de solidarité active prévu à l'article L. 262-1 du même code ;
9° La prestation de compensation servie en vertu des dispositions de l'article
L. 245-1 du code de l'action sociale et des familles , y compris le dédommagement
mentionné à l'article L. 245-12 du même code ;
10° L'allocation pour demandeur d'asile prévue à l'article L. 553-1 du code de
l'entrée et du séjour des étrangers et du droit d'asile ;
11° L'allocation de reconnaissance prévue à l'article 6 de la loi n° 2005-158 du
23 février 2005 portant reconnaissance de la Nation et contribution nationale en
faveur des Français rapatriés ;
12° L'allocation viagère prévue à l' article 133 de la loi n° 2015-1785 du 29
décembre 2015 de finances pour 2016 ;
13° Les pensions temporaires d'orphelin versées en application du code des
pensions civiles et militaires de retraite , à concurrence de l'allocation aux
adultes handicapés, lorsqu'elles remplacent cette allocation en tout ou partie
du fait de la loi, ainsi que la fraction de ces pensions temporaires qui
correspond au montant des prestations familiales auxquelles aurait eu droit
le parent décédé ;
14° Les allocations, indemnités et prestations mentionnées au 9° de l'article
81 du code général des impôts .
II.-Ne sont pas non plus assujettis :
1° La prise en charge des frais de santé ;
2° Les pensions alimentaires répondant aux conditions fixées par les articles
205 à 211 du code civil, les rentes prévues à l'article 276 du même code et les
pensions alimentaires versées en vertu d'une décision de justice, en cas de
séparation de corps ou de divorce, ou en cas d'instance en séparation de corps
ou en divorce ;
3° Les rentes servies en représentation de dommages-intérêts en vertu d'une
condamnation prononcée judiciairement ou au titre de la solidarité nationale
pour la réparation d'un préjudice corporel ayant entraîné pour la victime une
incapacité permanente totale l'obligeant à avoir recours à l'assistance d'une
tierce personne pour effectuer les actes ordinaires de la vie ;
4° Les traitements attachés à la légion d'honneur et à la médaille militaire ;
5° Les mesures de réparation instaurées en faveur des victimes de persécutions
ou d'actes de barbarie durant la Deuxième Guerre mondiale ou de leurs ayants
droit ;
6° La somme forfaitaire valant réparation prévue à l'article 3 de la loi
n° 2022-229 du 23 février 2022 portant reconnaissance de la Nation envers
les harkis et les autres personnes rapatriées d'Algérie anciennement de statut
civil de droit local et réparation des préjudices subis par ceux-ci et leurs
familles du fait de l'indignité de leurs conditions d'accueil et de vie dans
certaines structures sur le territoire français.
#### Titre VI : Dispositions relatives aux prestations et aux soins - Contrôle médical - Tutelle aux prestations sociales
##### Chapitre 1er : Dispositions relatives aux prestations
###### Section 1 : Bénéficiaires
####### Sous-section 4 : Assurance vieillesse
######## Paragraphe 1 : Information et simplification des démarches des assurés.
######### Article L161-17-2 | LEGIARTI000025014605
L'âge d'ouverture du droit à une pension de retraite mentionné au premier alinéa
de l'article L. 351-1 du présent code, à l'article L. 732-18 du code rural
et de la pêche maritime, au 1° du I de l'article L. 24 et au 1° de l'article
L. 25 du code des pensions civiles et militaires de retraite est fixé à
soixante-deux ans pour les assurés nés à compter du 1er janvier 1955.
```catala
champ d'application OuvertureDroitsRetraite:
définition âge_ouverture_droit sous condition
date_naissance_assuré >= |1955-01-01|
conséquence égal à 62 an
champ d'application ÉligibilitéAidesPersonnelleLogement:
définition ouverture_droits_retraite.date_naissance_assuré égal à
demandeur.date_naissance
définition âge_l161_17_2_sécu égal à
ouverture_droits_retraite.âge_ouverture_droit
```
Cet âge est fixé par décret dans la limite de l'âge mentionné au premier
alinéa pour les assurés nés avant le 1er janvier 1955 et, pour ceux nés
entre le 1er juillet 1951 et le 31 décembre 1954, de manière croissante :
1° A raison de quatre mois par génération pour les assurés nés entre le 1er
juillet 1951 et le 31 décembre 1951 ;
2° A raison de cinq mois par génération pour les assurés nés entre le 1er
janvier 1952 et le 31 décembre 1954.
NOTA :
Loi n° 2010-1330 du 9 novembre 2010, article 118 II : Les dispositions de
l'article 18 sont applicables aux pensions prenant effet à compter du 1er juillet 2011.
### Livre III : Dispositions relatives aux assurances sociales et à diverses catégories de personnes rattachées au régime générale
#### Titre V : Assurance vieillesse - Assurance veuvage
##### Chapitre 1er : Ouverture du droit, liquidation et calcul des pensions de retraite
###### Section 1 : Conditions d'âge
####### Article L351-1-5 | LEGIARTI000047449233
La condition d'âge prévue au premier alinéa de l'article L. 351-1 est abaissée,
dans des conditions fixées par décret, pour les assurés reconnus inaptes au
travail dans les conditions prévues à l'article L. 351-7 et pour ceux justifiant
d'une incapacité permanente au moins égale à un taux fixé par décret.
```catala
# Définit ÉligibilitéAidesPersonnelleLogement.âge_l351_1_5_sécu,
# mais valeur dans un décret.
```
###### Section 2 : Périodes d'assurance, périodes équivalentes et périodes assimilées
####### Sous-section 1 : Dispositions générales.
######## Article D351-1-14 | LEGIARTI000047634688
L'âge prévu au premier alinéa de l'article L. 351-1 est abaissé, en application
de l'article L. 351-1-5, à soixante-deux ans pour les assurés reconnus inaptes
au travail dans les conditions prévues à l'article L. 351-7 et pour les assurés
dont l'incapacité permanente est supérieure ou égale au pourcentage prévu pour
l'application de l'article L. 821-2.
```catala
champ d'application ÉligibilitéAidesPersonnelleLogement
sous condition date_courante >= |2023-09-01|
# L'article L351-1-5 du CCS est entré en vigueur au 1er septembre 2023,
# aussi le code Catala appelé avec une date antérieure ne devrait pas avoir
# besoin de cette valeur. Cependant, la sémantique de Catala fait que
# la variable "âge_l351_1_5_sécu" est calculée quelque soit la date,
# même si elle n'est pas utilisée ; or si nous ne donnons pas de définition
# à "âge_l351_1_5_sécu" avant le 1er septembre 2023 nous allons avoir une
# erreur à l'exécution. Ainsi, nous définissons rétroactivement cette
# valeur avec la condition ci-dessous, même si c'est un anachronisme.
ou date_courante <= |2023-09-01|:
définition âge_l351_1_5_sécu égal à 62 an
```
NOTA :
Conformément à l'article 9 du décret n° 2023-436 du 3 juin 2023,
ces dispositions s'appliquent aux pensions prenant effet à compter
du 1er septembre 2023.
###### Section 5 : Taux et montant de la pension
####### Article L351-8 | LEGIARTI000028498855
Bénéficient du taux plein même s'ils ne justifient pas de la durée requise
d'assurance ou de périodes équivalentes dans le régime général et un ou
plusieurs autres régimes obligatoires :
1° Les assurés qui atteignent l'âge prévu à l'article L. 161-17-2 augmenté
de cinq années ;
```catala
champ d'application ÉligibilitéAidesPersonnelleLogement:
définition âge_l351_8_1_sécu égal à âge_l161_17_2_sécu + 5 an
```
1° bis Les assurés ayant interrompu leur activité professionnelle en raison de
leur qualité d'aidant familial telle que définie à l'article L. 245-12 du code
de l'action sociale et des familles qui atteignent l'âge de soixante-cinq ans
dans des conditions déterminées par décret en Conseil d'Etat ;
1° ter Les assurés justifiant d'une incapacité permanente au moins égale à un
taux fixé par décret, qui atteignent l'âge mentionné à l'article L. 161-17-2 ;
2°) les assurés reconnus inaptes au travail dans les conditions prévues à
l'article L. 351-7 ;
3°) les anciens déportés ou internés titulaires de la carte de déporté ou
interné de la Résistance ou de la carte de déporté ou interné politique ;
4°) les mères de famille salariées justifiant d'une durée minimum d'assurance
dans le régime général, ou dans ce régime et celui des salariés agricoles qui
ont élevé au moins un nombre minimum d'enfants, dans les conditions prévues au
deuxième alinéa de l'article L. 342-4 , et qui ont exercé un travail manuel
ouvrier pendant une durée déterminée ;
4° bis) les travailleurs handicapés admis à demander la liquidation de leur
pension de retraite avant l'âge prévu au premier alinéa de l'article L. 351-1 ;
5°) les anciens prisonniers de guerre lorsque, sur leur demande, leur pension
est liquidée à un âge variant suivant la durée de captivité dans des conditions
fixées par décret.
Les anciens prisonniers de guerre évadés de guerre, au-delà d'un certain temps
de captivité, et les anciens prisonniers rapatriés pour maladie peuvent choisir
le régime le plus favorable.
Toute partie de mois n'est pas prise en considération.
Les dispositions du 5°) ci-dessus s'appliquent à tous les anciens combattants
pour leur durée de service actif passé sous les drapeaux.
NOTA :
Conformément à l'article 37 IV de la loi n° 2014-40 du 20 janvier 2014,
l'article L351-8, dans sa rédaction issue de la présente loi, est applicable
aux pensions prenant effet à compter du 1er février 2014.
### Livre VIII : Allocations aux personnes âgées - Allocation aux adultes handicapés - Aides à l'emploi pour la garde des jeunes enfants - Aides aux collectivités et organismes logeant à titre temporaire des personnes défavorisées ou gérant des aires d'accueil des gens du voyage - Protection complémentaire en matière de simultanément
#### Titre I : Allocations aux personnes âgées
##### Chapitre 5 : Allocation de solidarité aux personnes âgées
###### Section 1 : Ouverture du droit et liquidation de l'allocation de solidarité aux personnes âgées
####### Sous-section 3 : Appréciation des ressources
######## Article L815-9 | LEGIARTI000006744880
L'allocation de solidarité aux personnes âgées n'est due que si le total
de cette allocation et des ressources personnelles de l'intéressé et du conjoint,
du concubin ou du partenaire lié par un pacte civil de solidarité n'excède pas des
plafonds fixés par décret. Lorsque le total de la ou des allocations de
solidarité et des ressources personnelles de l'intéressé ou des époux,
concubins ou partenaires liés par un pacte civil de solidarité dépasse ces
plafonds, la ou les allocations sont réduites à due concurrence.
```catala
# Définit ÉligibilitéAidesPersonnelleLogement.plafond_individuel_l815_9_sécu,
# mais valeur dans un décret.
```
## Partie réglementaire - Décrets simples
### Livre I : Généralités - Dispositions communes à tout ou partie des régimes de base
#### Titre VI : Dispositions relatives aux prestations et aux soins - Contrôle médical - Tutelle aux prestations sociales
##### Chapitre 1er : Dispositions relatives aux prestations
###### Section 1 : Bénéficiaires
####### Sous-section 4 : Assurance vieillesse
######## Paragraphe 2 : Ouverture du droit et liquidation.
######### Article D161-2-1-9 | LEGIARTI000025089933
L'âge prévu au second alinéa de l'article L. 161-17-2 est fixé à :
1° Soixante ans pour les assurés nés avant le 1er juillet 1951 ;
```catala
champ d'application OuvertureDroitsRetraite:
définition âge_ouverture_droit sous condition
date_naissance_assuré < |1951-07-01|
conséquence égal à 60 an
```
2° Soixante ans et quatre mois pour les assurés nés entre le 1er juillet
1951 et le 31 décembre 1951 inclus ;
```catala
champ d'application OuvertureDroitsRetraite:
définition âge_ouverture_droit sous condition
date_naissance_assuré >= |1951-07-01| et
date_naissance_assuré <= |1951-12-31|
conséquence égal à 60 an + 4 mois
```
3° Soixante ans et neuf mois pour les assurés nés en 1952 ;
```catala
champ d'application OuvertureDroitsRetraite:
définition âge_ouverture_droit sous condition
accès_année de date_naissance_assuré = 1952
conséquence égal à 60 an + 9 mois
```
4° Soixante et un ans et deux mois pour les assurés nés en 1953 ;
```catala
champ d'application OuvertureDroitsRetraite:
définition âge_ouverture_droit sous condition
accès_année de date_naissance_assuré = 1953
conséquence égal à 61 an + 2 mois
```
5° Soixante et un ans et sept mois pour les assurés nés en 1954 ;
```catala
champ d'application OuvertureDroitsRetraite:
définition âge_ouverture_droit sous condition
accès_année de date_naissance_assuré = 1954
conséquence égal à 61 an + 7 mois
```
6° Soixante deux ans pour les assurés nés à compter du 1er janvier 1955.
```catala
# Déjà codé dans L161-17-2
```
### Livre VIII : Allocations aux personnes âgées - Allocation aux adultes handicapés - Aides à l'emploi pour la garde des jeunes enfants - Protection complémentaire en matière de santé
#### Titre I : Allocations aux personnes âgées
##### Chapitre 5 : Allocation de solidarité aux personnes âgées
###### Section 1 : Ouverture du droit et liquidation de l'allocation de solidarité aux personnes âgées
####### Article D815-1 | LEGIARTI000036760292
Le montant maximum servi au titre de l'allocation de solidarité aux personnes
âgées est fixé :
a) Pour les personnes seules, ou lorsque seul un des conjoints, concubins ou
partenaires liés par un pacte civil de solidarité en bénéficie, à 9 998,40 euros
par an à compter du 1er avril 2018, à 10 418,40 euros par an à compter du 1er
janvier 2019 et à 10 838,40 euros par an à compter du 1er janvier 2020 ;
```catala
# Uniquement la valeur du plafond individuel est importante pour
# l'éligibilité aux APL.
champ d'application ÉligibilitéAidesPersonnelleLogement:
définition plafond_individuel_l815_9_sécu sous condition
date_courante >= |2018-04-01| et
date_courante < |2019-01-01|
conséquence égal à 9 998,40€
définition plafond_individuel_l815_9_sécu sous condition
date_courante >= |2019-01-01| et
date_courante < |2020-01-01|
conséquence égal à 10 418,40€
définition plafond_individuel_l815_9_sécu sous condition
date_courante >= |2020-01-01| et
date_courante < |2021-01-01|
conséquence égal à 10 838,40€
```
b) Lorsque les deux conjoints, concubins ou partenaires liés par un pacte civil
de solidarité en bénéficient, à 15 522,54 euros par an à compter du 1er avril
2018, à 16 174,59 euros par an à compter du 1er janvier 2019 et à 16 826,64 euros
par an à compter du 1er janvier 2020. Dans ce cas, le montant est servi par moitié
à chacun des deux allocataires concernés.
Les dispositions du b sont également applicables pour le calcul de l'allocation
de solidarité aux personnes âgées servie au demandeur lorsque son conjoint,
concubin ou partenaire lié par un pacte civil de solidarité bénéficie de
l'allocation supplémentaire d'invalidité visée à l'article L. 815-24 .
NOTA :
Décret n° 2018-227 du 30 mars 2018, article 2, ces dispositions s'appliquent aux
prestations dues à compter du mois d'avril 2018.
####### Article D815-2 | LEGIARTI000029619577
Le plafond annuel prévu à l'article L. 815-9 pour une personne seule, est égal
au montant maximum prévu au a de l'article D. 815-1 pour la période correspondante.
Le plafond applicable lorsque le ou les allocataires sont mariés, concubins
ou partenaires liés par un pacte civil de solidarité est égal au montant
maximum prévu au b de l'article D. 815-1.
NOTA :
Décret n° 2014-1215 du 20 octobre 2014 JORF du 22 octobre 2014, art. 2 :
Ces dispositions s'appliquent aux prestations dues à compter du mois
d'octobre 2014 .

View File

@ -1,39 +0,0 @@
(rule
(targets aides_logement.ml aides_logement_api_web.ml)
(deps
(source_tree ..)
%{workspace_root}/compiler/plugins/api_web%{ext_plugin})
(action
(chdir
%{workspace_root}
(run
catala
api_web
-t
--plugin-dir=compiler/plugins
%{dep:aides_logement.catala_fr}))))
(rule
(targets aides_logement_schema.json)
(deps
(source_tree ..)
%{workspace_root}/compiler/plugins/json_schema%{ext_plugin})
(action
(chdir
%{workspace_root}
(run
catala
json_schema
-t
--plugin-dir=compiler/plugins
"--scope=CalculetteAidesAuLogementGardeAltern\195\169e"
%{dep:aides_logement.catala_fr}))))
(rule
(target aides_logement.py)
(deps
(source_tree ..))
(action
(chdir
%{workspace_root}
(run catala Python -O -t %{dep:aides_logement.catala_fr}))))

File diff suppressed because it is too large Load Diff

View File

@ -1,109 +0,0 @@
> Inclusion: ../aides_logement.catala_fr
# Tests
```catala
# Tiré de la page 54 de
# https://www.ecologie.gouv.fr/sites/default/files/les_aides_personnelles_au_logement_element_de_calcul_septembre_2021.pdf#page=45
déclaration champ d'application Exemple1:
calcul champ d'application CalculAllocationLogementAccessionPropriété
résultat montant contenu argent
champ d'application Exemple1:
définition calcul.ressources_ménage_arrondies égal à 17 500 €
définition calcul.date_signature_prêt égal à |2015-10-01|
définition calcul.zone égal à Zone2
définition calcul.mensualité_principale égal à 450 €
définition calcul.nombre_personnes_à_charge égal à 2
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.date_courante égal à |2023-03-15|
définition calcul.résidence égal à Guadeloupe
définition calcul.charges_mensuelles_prêt égal à 450 €
définition calcul.type_travaux_logement égal à
TypeTravauxLogementR842_5.PasDeTravaux
définition calcul.date_entrée_logement égal à |2015-10-10|
définition calcul.local_habité_première_fois_bénéficiaire égal à faux
définition calcul.copropriété égal à faux
définition calcul.situation_r822_11_13_17 égal à faux
définition calcul.opérations_logement_évolutifs_sociaux_accession_propriété_aidée_État égal à faux
définition montant égal à
calcul.traitement_aide_finale de
calcul.aide_finale_formule
assertion montant = 96,48 €
assertion calcul.mensualité_éligible = 375,2 €
assertion calcul.mensualité_minimale = 267,90 €
assertion calcul.coefficient_prise_en_charge = 0,62
assertion calcul.aide_finale_formule = 101,90€
```
```catala
déclaration champ d'application Exemple2:
calcul champ d'application CalculAllocationLogementAccessionPropriété
résultat montant contenu argent
champ d'application Exemple2:
définition calcul.ressources_ménage_arrondies égal à 22 000 €
définition calcul.date_signature_prêt égal à |2021-12-01|
définition calcul.zone égal à Zone2
définition calcul.mensualité_principale égal à 500 €
définition calcul.nombre_personnes_à_charge égal à 4
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.date_courante égal à |2023-04-10|
définition calcul.résidence égal à SaintPierreEtMiquelon
définition calcul.charges_mensuelles_prêt égal à 500 €
définition calcul.type_travaux_logement égal à
TypeTravauxLogementR842_5.PrévuDansListeR321_15
définition calcul.date_entrée_logement égal à |2020-12-01|
définition calcul.local_habité_première_fois_bénéficiaire égal à faux
définition calcul.copropriété égal à faux
définition calcul.situation_r822_11_13_17 égal à faux
définition calcul.opérations_logement_évolutifs_sociaux_accession_propriété_aidée_État égal à faux
définition montant égal à
calcul.traitement_aide_finale de
calcul.aide_finale_formule
assertion calcul.mensualité_éligible = 405,10 €
assertion calcul.mensualité_minimale = 296,96 €
assertion calcul.coefficient_prise_en_charge = 0,66
assertion calcul.aide_finale_formule = 141,99€
assertion montant = 85,00 €
```
```catala-test-inline
$ catala Typecheck --check-invariants
[RESULT] Invariant typing_defaults checked. result: [25044/25044]
[RESULT] Invariant match_inversion checked. result: [771/771]
[RESULT] Invariant app_inversion checked. result: [271/271]
[RESULT] Invariant no_return_a_function checked. result: [3046/3046]
[RESULT] Invariant no_partial_evaluation checked. result: [271/271]
[RESULT] Invariant default_no_arrow checked. result: [1396/1396]
[RESULT] Typechecking successful!
```
```catala-test-inline
$ catala Interpret -s Exemple1
[RESULT] Computation successful! Results:
[RESULT] montant = 96,48 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple1 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 96,48 €
```
```catala-test-inline
$ catala Interpret -s Exemple2
[RESULT] Computation successful! Results:
[RESULT] montant = 85,00 €
```
```catala-test-inline
$ catala Interpret_lcalc -s Exemple2 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 85,00 €
```

View File

@ -1,185 +0,0 @@
> Inclusion: ../aides_logement.catala_fr
# Tests
```catala
# Tiré de la page 24 de
# https://www.ecologie.gouv.fr/sites/default/files/les_aides_personnelles_au_logement_element_de_calcul_septembre_2021.pdf
déclaration champ d'application Exemple1 :
calcul champ d'application CalculAllocationLogementLocatif
résultat montant contenu argent
champ d'application Exemple1 :
définition calcul.loyer_principal égal à 425 €
définition calcul.ressources_ménage_arrondies égal à 11 500€
définition calcul.bénéficiaire_aide_adulte_ou_enfant_handicapés égal à faux
définition calcul.date_courante égal à |2021-09-29|
définition calcul.nombre_personnes_à_charge égal à 2
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.zone égal à Zone2
définition calcul.logement_est_chambre égal à faux
définition calcul.résidence égal à Métropole
définition calcul.âgées_ou_handicap_adultes_hébergées_onéreux_particuliers
égal à faux
définition calcul.type_aide égal à
TypeAidesPersonnelleLogement.AllocationLogementFamiliale
définition calcul.colocation égal à faux
définition calcul.réduction_loyer_solidarité égal à 0 €
définition calcul.logement_meublé_d842_2 égal à faux
définition calcul.changement_logement_d842_4 égal à PasDeChangement
définition montant égal à
calcul.traitement_aide_finale de calcul.aide_finale_formule
# Attention dans cet exemple le taux de loyer éligible est bien arrondi à
# la troisième décimale en pourcentage comme le dit bien le 2° de l'article
# 14 de l'arrêté du 27 septembre 2019, et non à la deuxième décimale comme le
# montre l'exemple sur le document du gouvernement.
assertion montant = 345,73€
# Transmis par DGALN/DHUP/FE4 le 12/07/2022
déclaration champ d'application Exemple2 :
calcul champ d'application CalculAllocationLogementLocatif
résultat montant contenu argent
champ d'application Exemple2 :
définition calcul.loyer_principal égal à 425 €
définition calcul.ressources_ménage_arrondies égal à 11 500€
définition calcul.bénéficiaire_aide_adulte_ou_enfant_handicapés égal à faux
définition calcul.date_courante égal à |2022-05-01|
définition calcul.nombre_personnes_à_charge égal à 2
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.zone égal à Zone2
définition calcul.résidence égal à Métropole
définition calcul.logement_est_chambre égal à faux
définition calcul.âgées_ou_handicap_adultes_hébergées_onéreux_particuliers
égal à faux
définition calcul.type_aide égal à
TypeAidesPersonnelleLogement.AllocationLogementFamiliale
définition calcul.colocation égal à faux
définition calcul.réduction_loyer_solidarité égal à 0 €
définition calcul.logement_meublé_d842_2 égal à faux
définition calcul.changement_logement_d842_4 égal à PasDeChangement
définition montant égal à
calcul.traitement_aide_finale de calcul.aide_finale_formule
assertion montant = 352,77€
# Exemple aux DROM
déclaration champ d'application Exemple3 :
calcul champ d'application CalculAllocationLogementLocatif
résultat montant contenu argent
champ d'application Exemple3 :
définition calcul.loyer_principal égal à 375 €
définition calcul.ressources_ménage_arrondies égal à 9 500€
définition calcul.bénéficiaire_aide_adulte_ou_enfant_handicapés égal à faux
définition calcul.date_courante égal à |2023-03-01|
définition calcul.nombre_personnes_à_charge égal à 1
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.zone égal à Zone2
définition calcul.résidence égal à LaRéunion
définition calcul.logement_est_chambre égal à faux
définition calcul.âgées_ou_handicap_adultes_hébergées_onéreux_particuliers
égal à faux
définition calcul.type_aide égal à
TypeAidesPersonnelleLogement.AllocationLogementFamiliale
définition calcul.colocation égal à faux
définition calcul.réduction_loyer_solidarité égal à 0 €
définition calcul.logement_meublé_d842_2 égal à faux
définition calcul.changement_logement_d842_4 égal à PasDeChangement
définition montant égal à
calcul.traitement_aide_finale de calcul.aide_finale_formule
assertion montant = 339,70€
```
```catala
# Exemple à Saint-Pierre-et-Miquelon
déclaration champ d'application Exemple4 :
calcul champ d'application CalculAllocationLogementLocatif
résultat montant contenu argent
champ d'application Exemple4 :
définition calcul.loyer_principal égal à 500 €
définition calcul.ressources_ménage_arrondies égal à 12 500€
définition calcul.bénéficiaire_aide_adulte_ou_enfant_handicapés égal à faux
définition calcul.date_courante égal à |2023-04-01|
définition calcul.nombre_personnes_à_charge égal à 2
définition calcul.situation_familiale_calcul_apl égal à PersonneSeule
définition calcul.zone égal à Zone2
définition calcul.résidence égal à SaintPierreEtMiquelon
définition calcul.logement_est_chambre égal à faux
définition calcul.âgées_ou_handicap_adultes_hébergées_onéreux_particuliers
égal à faux
définition calcul.type_aide égal à
TypeAidesPersonnelleLogement.AllocationLogementFamiliale
définition calcul.colocation égal à faux
définition calcul.réduction_loyer_solidarité égal à 0 €
définition calcul.logement_meublé_d842_2 égal à faux
définition calcul.changement_logement_d842_4 égal à PasDeChangement
définition montant égal à
calcul.traitement_aide_finale de calcul.aide_finale_formule
assertion calcul.montant_forfaitaire_charges_d823_16 = 81,56 €
assertion calcul.plafond_loyer_d823_16_2 = 424,22 €
assertion calcul.participation_minimale = 42,99 €
assertion calcul.taux_composition_familiale = 2,38%
assertion calcul.participation_personnelle = 131,30 €
assertion montant = 230,63 €
```
```catala-test-inline
$ catala Typecheck --check-invariants
[RESULT] Invariant typing_defaults checked. result: [25388/25388]
[RESULT] Invariant match_inversion checked. result: [771/771]
[RESULT] Invariant app_inversion checked. result: [275/275]
[RESULT] Invariant no_return_a_function checked. result: [3046/3046]
[RESULT] Invariant no_partial_evaluation checked. result: [275/275]
[RESULT] Invariant default_no_arrow checked. result: [1460/1460]
[RESULT] Typechecking successful!
```
```catala-test-inline
$ catala Interpret -s Exemple1 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 345,73 €
```
```catala-test-inline
$ catala Interpret -s Exemple2 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 352,77 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple1 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 345,73 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple2 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 352,77 €
```
```catala-test-inline
$ catala Interpret -s Exemple3 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 339,70 €
```
```catala-test-inline
$ catala Interpret -s Exemple4 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 230,63 €
```
```catala-test-inline
$ catala Interpret_lcalc -s Exemple3 --disable-warnings --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 339,70 €
```
```catala-test-inline
$ catala Interpret_lcalc -s Exemple4 --disable-warnings --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 230,63 €
```

View File

@ -1,54 +0,0 @@
> Inclusion: ../aides_logement.catala_fr
# Tests
```catala
# Transmis par DGALN/DHUP/FE4 le 14/07/2022
déclaration champ d'application CasTest1 :
calcul champ d'application CalculAllocationLogementFoyer
résultat montant contenu argent
champ d'application CasTest1:
définition calcul.date_conventionnement égal à |2020-01-01|
définition calcul.type_logement_foyer égal à
TypeLogementFoyer.RésidenceSociale
définition calcul.redevance égal à 350 €
définition calcul.résidence égal à Métropole
définition calcul.logement_foyer_jeunes_travailleurs égal à faux
définition calcul.ressources_ménage_arrondies égal à 7 500€
définition calcul.nombre_personnes_à_charge égal à 0
définition calcul.situation_familiale_calcul_apl égal à PersonneSeule
définition calcul.zone égal à Zone1
définition calcul.date_courante égal à |2022-05-01|
définition calcul.catégorie_équivalence_loyer_d842_16 égal à
PersonnesÂgéesSelon3DeD842_16
assertion calcul.équivalence_loyer = 206,40€
assertion calcul.loyer_minimal = 124,64 €
assertion calcul.coefficient_prise_en_charge = 0,6
définition montant égal à
calcul.traitement_aide_finale de
calcul.aide_finale_formule
assertion montant = 76,38 €
```
```catala-test-inline
$ catala Typecheck --check-invariants
[RESULT] Invariant typing_defaults checked. result: [24823/24823]
[RESULT] Invariant match_inversion checked. result: [771/771]
[RESULT] Invariant app_inversion checked. result: [269/269]
[RESULT] Invariant no_return_a_function checked. result: [3046/3046]
[RESULT] Invariant no_partial_evaluation checked. result: [269/269]
[RESULT] Invariant default_no_arrow checked. result: [1356/1356]
[RESULT] Typechecking successful!
```
```catala-test-inline
$ catala Interpret -s CasTest1 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 76,38 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s CasTest1 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 76,38 €
```

View File

@ -1,193 +0,0 @@
> Inclusion: ../aides_logement.catala_fr
# Tests
```catala
# Tiré de la page 45 de
# https://www.ecologie.gouv.fr/sites/default/files/les_aides_personnelles_au_logement_element_de_calcul_septembre_2021.pdf#page=45
déclaration champ d'application Exemple1:
calcul champ d'application CalculAidePersonnaliséeLogementAccessionPropriété
résultat montant contenu argent
champ d'application Exemple1:
définition calcul.ressources_ménage_arrondies égal à 18 000 €
définition calcul.date_signature_prêt égal à |2017-12-15|
définition calcul.zone égal à Zone2
définition calcul.mensualité_principale égal à 650 €
définition calcul.nombre_personnes_à_charge égal à 2
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.date_courante égal à |2021-09-15|
définition calcul.résidence égal à Métropole
définition calcul.type_prêt égal à D331_63_64
définition calcul.type_travaux_logement égal à
TypeTravauxLogementD832_15.PasDeTravaux
définition calcul.ancienneté_logement égal à Neuf
définition calcul.date_entrée_logement égal à |2017-12-15|
définition calcul.local_habité_première_fois_bénéficiaire égal à faux
définition calcul.copropriété égal à faux
définition calcul.situation_r822_11_13_17 égal à faux
définition montant égal à
calcul.traitement_aide_finale de
calcul.aide_finale_formule
assertion montant = 181,91 €
assertion calcul.mensualité_éligible = 533,91 €
assertion calcul.mensualité_minimale = 332,75 €
assertion calcul.coefficient_prise_en_charge_d832_10 = 0,67
assertion calcul.aide_finale_formule = 187,35€
```
```catala
# Tiré de la page 45 de
# https://www.ecologie.gouv.fr/sites/default/files/les_aides_personnelles_au_logement_element_de_calcul_septembre_2021.pdf#page=45
déclaration champ d'application Exemple2:
calcul champ d'application CalculAidePersonnaliséeLogementAccessionPropriété
résultat montant contenu argent
champ d'application Exemple2:
définition calcul.ressources_ménage_arrondies égal à 19 000 €
définition calcul.date_signature_prêt égal à |2019-12-02|
définition calcul.zone égal à Zone3
définition calcul.mensualité_principale égal à 495,73 €
définition calcul.nombre_personnes_à_charge égal à 2
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.date_courante égal à |2021-09-15|
définition calcul.résidence égal à Métropole
définition calcul.type_prêt égal à D331_63_64
définition calcul.type_travaux_logement égal à
TypeTravauxLogementD832_15.TravauxPourAcquisitionD832_15_1
définition calcul.ancienneté_logement égal à (Ancien contenu (AmélioréParOccupant.Oui))
définition calcul.date_entrée_logement égal à |2020-03-02|
définition calcul.local_habité_première_fois_bénéficiaire égal à faux
définition calcul.copropriété égal à faux
définition calcul.situation_r822_11_13_17 égal à faux
# Ici nous sommes en désaccord avec la valeur finale, car la mensualité
# plafond est déterminée dans le cas d'un logement ancien acquis et amélioré
# par le 18° b° de l'article 18 de l'arrêté du 27 septembre 2019, et non
# par le 18° a). Ce qui donne une mensualité éligible de 399,20 € et non
# de 495,73 €.
définition montant égal à calcul.traitement_aide_finale de calcul.aide_finale_formule
assertion montant = 67,34 €
assertion calcul.mensualité_éligible = 399,20 €
assertion calcul.mensualité_minimale = 367,42 €
assertion calcul.coefficient_prise_en_charge_d832_10 = 0,66
assertion calcul.aide_finale_formule = 72,77€
```
```catala
# Transmis par DGALN/DHUP/FE4 le 14/07/2022
déclaration champ d'application Exemple3:
calcul champ d'application CalculAidePersonnaliséeLogementAccessionPropriété
résultat montant contenu argent
champ d'application Exemple3:
définition calcul.ressources_ménage_arrondies égal à 18 000 €
définition calcul.date_signature_prêt égal à |2017-12-15|
définition calcul.zone égal à Zone2
définition calcul.résidence égal à Métropole
définition calcul.mensualité_principale égal à 650 €
définition calcul.nombre_personnes_à_charge égal à 2
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.date_courante égal à |2022-05-01|
définition calcul.type_prêt égal à D331_63_64
définition calcul.type_travaux_logement égal à
TypeTravauxLogementD832_15.PasDeTravaux
définition calcul.ancienneté_logement égal à Neuf
définition calcul.date_entrée_logement égal à |2017-12-15|
définition calcul.local_habité_première_fois_bénéficiaire égal à faux
définition calcul.copropriété égal à faux
définition calcul.situation_r822_11_13_17 égal à faux
définition montant égal à
calcul.traitement_aide_finale de
calcul.aide_finale_formule
assertion montant = 181,91 €
assertion calcul.mensualité_éligible = 533,91 €
assertion calcul.mensualité_minimale = 332,75 €
assertion calcul.coefficient_prise_en_charge_d832_10 = 0,67
assertion calcul.aide_finale_formule = 187,57€
```
```catala
# Transmis par DGALN/DHUP/FE4 le 14/07/2022
déclaration champ d'application Exemple4:
calcul champ d'application CalculAidePersonnaliséeLogementAccessionPropriété
résultat montant contenu argent
champ d'application Exemple4:
définition calcul.ressources_ménage_arrondies égal à 19 000 €
définition calcul.date_signature_prêt égal à |2019-12-02|
définition calcul.zone égal à Zone3
définition calcul.mensualité_principale égal à 495 €
définition calcul.résidence égal à Métropole
définition calcul.nombre_personnes_à_charge égal à 2
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.date_courante égal à |2022-05-01|
définition calcul.type_prêt égal à D331_63_64
définition calcul.type_travaux_logement égal à
TypeTravauxLogementD832_15.TravauxSurLogementDéjàAcquisD832_15_2
définition calcul.ancienneté_logement égal à (Ancien contenu (AmélioréParOccupant.Oui))
définition calcul.date_entrée_logement égal à |2020-03-02|
définition calcul.local_habité_première_fois_bénéficiaire égal à faux
définition calcul.copropriété égal à faux
définition calcul.situation_r822_11_13_17 égal à faux
définition montant égal à
calcul.traitement_aide_finale de
calcul.aide_finale_formule
assertion montant = 118,59 €
assertion calcul.mensualité_éligible = 399,20 €
assertion calcul.mensualité_minimale = 290,20 €
assertion calcul.coefficient_prise_en_charge_d832_10 = 0,66
assertion calcul.aide_finale_formule = 123,95 €
```
```catala-test-inline
$ catala Interpret -s Exemple1 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 181,91 €
```
```catala-test-inline
$ catala Interpret -s Exemple2 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 67,34 €
```
```catala-test-inline
$ catala Interpret -s Exemple3 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 181,91 €
```
```catala-test-inline
$ catala Interpret -s Exemple4 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 118,59 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple1 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 181,91 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple2 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 67,34 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple3 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 181,91 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple4 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 118,59 €
```

View File

@ -1,378 +0,0 @@
> Inclusion: ../aides_logement.catala_fr
# Tests
```catala
déclaration champ d'application Exemple1 :
calcul champ d'application CalculAidePersonnaliséeLogementLocatif
résultat montant contenu argent
champ d'application Exemple1:
définition montant égal à calcul.traitement_aide_finale de calcul.aide_finale_formule
définition calcul.loyer_principal égal à 700 €
définition calcul.date_courante égal à |2022-02-03|
définition calcul.logement_est_chambre égal à faux
définition calcul.âgées_ou_handicap_adultes_hébergées_onéreux_particuliers
égal à faux
définition calcul.zone égal à Zone1
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.nombre_personnes_à_charge égal à 3
définition calcul.type_aide égal à AidePersonnaliséeLogement
définition calcul.colocation égal à faux
définition calcul.réduction_loyer_solidarité égal à 0 €
définition calcul.ressources_ménage_arrondies égal à 36 000 €
définition calcul.bénéficiaire_aide_adulte_ou_enfant_handicapés égal à faux
définition calcul.logement_meublé_d842_2 égal à faux
définition calcul.résidence égal à Métropole
assertion montant = 0 €
assertion calcul.montant_forfaitaire_charges_d823_16 = 91,09 €
assertion calcul.plafond_loyer_d823_16_2 = 524,20 €
assertion calcul.participation_minimale = 52,30 €
assertion calcul.taux_composition_familiale = 2,01%
assertion calcul.participation_personnelle = 713,25 €
```
```catala
déclaration champ d'application Exemple2 :
calcul champ d'application CalculAidePersonnaliséeLogementLocatif
résultat montant contenu argent
champ d'application Exemple2:
définition montant égal à calcul.traitement_aide_finale de calcul.aide_finale_formule
définition calcul.loyer_principal égal à 425 €
définition calcul.date_courante égal à |2022-04-03|
définition calcul.logement_est_chambre égal à faux
définition calcul.zone égal à Zone2
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.nombre_personnes_à_charge égal à 2
définition calcul.type_aide égal à AidePersonnaliséeLogement
définition calcul.colocation égal à faux
définition calcul.réduction_loyer_solidarité égal à 0 €
définition calcul.ressources_ménage_arrondies égal à 11500 €
définition
calcul.âgées_ou_handicap_adultes_hébergées_onéreux_particuliers
égal à faux
définition calcul.bénéficiaire_aide_adulte_ou_enfant_handicapés égal à faux
définition calcul.logement_meublé_d842_2 égal à faux
définition calcul.résidence égal à Métropole
assertion montant = 352,77 €
assertion calcul.montant_forfaitaire_charges_d823_16 = 78,80 €
assertion calcul.plafond_loyer_d823_16_2 = 409,88 €
assertion calcul.participation_minimale = 41,54 €
assertion calcul.taux_composition_familiale = 2,38%
assertion calcul.participation_personnelle = 130,36 €
```
```catala
déclaration champ d'application Exemple3 :
calcul champ d'application CalculAidePersonnaliséeLogementLocatif
résultat montant contenu argent
champ d'application Exemple3:
définition montant égal à calcul.traitement_aide_finale de calcul.aide_finale_formule
définition calcul.loyer_principal égal à 408 €
définition calcul.date_courante égal à |2022-01-18|
définition calcul.logement_est_chambre égal à faux
définition
calcul.âgées_ou_handicap_adultes_hébergées_onéreux_particuliers
égal à faux
définition calcul.zone égal à Zone3
définition calcul.situation_familiale_calcul_apl égal à PersonneSeule
définition calcul.nombre_personnes_à_charge égal à 3
définition calcul.type_aide égal à AidePersonnaliséeLogement
définition calcul.colocation égal à faux
définition calcul.réduction_loyer_solidarité égal à 0 €
définition calcul.ressources_ménage_arrondies égal à 14300 €
définition calcul.bénéficiaire_aide_adulte_ou_enfant_handicapés égal à faux
définition calcul.logement_meublé_d842_2 égal à faux
définition calcul.résidence égal à Métropole
assertion montant = 321,61 €
assertion calcul.montant_forfaitaire_charges_d823_16 = 91,09 €
assertion calcul.plafond_loyer_d823_16_2 = 425,80 €
assertion calcul.participation_minimale = 42,42 €
assertion calcul.taux_composition_familiale = 2,01%
assertion calcul.participation_personnelle = 172,05 €
```
```catala
déclaration champ d'application Exemple4 :
calcul champ d'application CalculAidePersonnaliséeLogementLocatif
résultat montant contenu argent
champ d'application Exemple4:
définition montant égal à calcul.traitement_aide_finale de calcul.aide_finale_formule
définition calcul.loyer_principal égal à 680 €
définition calcul.date_courante égal à |2022-02-19|
définition calcul.logement_est_chambre égal à faux
définition
calcul.âgées_ou_handicap_adultes_hébergées_onéreux_particuliers
égal à faux
définition calcul.zone égal à Zone1
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.nombre_personnes_à_charge égal à 1
définition calcul.type_aide égal à AidePersonnaliséeLogement
définition calcul.colocation égal à faux
définition calcul.réduction_loyer_solidarité égal à 0 €
définition calcul.ressources_ménage_arrondies égal à 39500 €
définition calcul.bénéficiaire_aide_adulte_ou_enfant_handicapés égal à faux
définition calcul.logement_meublé_d842_2 égal à faux
définition calcul.résidence égal à Métropole
assertion montant = 0 €
assertion calcul.montant_forfaitaire_charges_d823_16 = 66,51 €
assertion calcul.plafond_loyer_d823_16_2 = 406,30 €
assertion calcul.participation_minimale = 40,19€
assertion calcul.taux_composition_familiale = 2,70%
assertion calcul.participation_personnelle = 1016,63 €
```
```catala
déclaration champ d'application Exemple5 :
calcul champ d'application CalculAidePersonnaliséeLogementLocatif
résultat montant contenu argent
champ d'application Exemple5:
définition montant égal à calcul.traitement_aide_finale de calcul.aide_finale_formule
définition calcul.loyer_principal égal à 610 €
définition calcul.date_courante égal à |2022-04-05|
définition calcul.logement_est_chambre égal à faux
définition
calcul.âgées_ou_handicap_adultes_hébergées_onéreux_particuliers
égal à faux
définition calcul.zone égal à Zone1
définition calcul.situation_familiale_calcul_apl égal à PersonneSeule
définition calcul.nombre_personnes_à_charge égal à 0
définition calcul.type_aide égal à AidePersonnaliséeLogement
définition calcul.colocation égal à faux
définition calcul.réduction_loyer_solidarité égal à 0 €
définition calcul.ressources_ménage_arrondies égal à 2700 €
définition calcul.bénéficiaire_aide_adulte_ou_enfant_handicapés égal à faux
définition calcul.logement_meublé_d842_2 égal à faux
définition calcul.résidence égal à Métropole
assertion montant = 311,56 €
assertion calcul.montant_forfaitaire_charges_d823_16 = 54,22 €
assertion calcul.plafond_loyer_d823_16_2 = 298,07 €
assertion calcul.participation_minimale = 35,39 €
assertion calcul.taux_composition_familiale = 2,83%
assertion calcul.participation_personnelle = 35,39€
```
```catala
déclaration champ d'application Exemple6 :
calcul champ d'application CalculAidePersonnaliséeLogementLocatif
résultat montant contenu argent
champ d'application Exemple6:
définition montant égal à calcul.traitement_aide_finale de calcul.aide_finale_formule
définition calcul.loyer_principal égal à 436 €
définition calcul.date_courante égal à |2022-05-02|
définition calcul.logement_est_chambre égal à faux
définition
calcul.âgées_ou_handicap_adultes_hébergées_onéreux_particuliers
égal à faux
définition calcul.zone égal à Zone2
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.nombre_personnes_à_charge égal à 0
définition calcul.type_aide égal à AidePersonnaliséeLogement
définition calcul.colocation égal à faux
définition calcul.réduction_loyer_solidarité égal à 0 €
définition calcul.ressources_ménage_arrondies égal à 19500 €
définition calcul.bénéficiaire_aide_adulte_ou_enfant_handicapés égal à faux
définition calcul.logement_meublé_d842_2 égal à faux
définition calcul.résidence égal à Métropole
assertion montant = 0 €
assertion calcul.montant_forfaitaire_charges_d823_16 = 54,22 €
assertion calcul.plafond_loyer_d823_16_2 = 317,97 €
assertion calcul.participation_minimale = 35,39 €
assertion calcul.taux_composition_familiale = 3,15%
assertion calcul.participation_personnelle = 477,32 €
```
```catala
déclaration champ d'application Exemple7 :
calcul champ d'application CalculAidePersonnaliséeLogementLocatif
résultat montant contenu argent
champ d'application Exemple7:
définition montant égal à calcul.traitement_aide_finale de calcul.aide_finale_formule
définition calcul.loyer_principal égal à 527 €
définition calcul.date_courante égal à |2022-02-13|
définition calcul.logement_est_chambre égal à faux
définition
calcul.âgées_ou_handicap_adultes_hébergées_onéreux_particuliers
égal à faux
définition calcul.zone égal à Zone2
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.nombre_personnes_à_charge égal à 6
définition calcul.type_aide égal à AidePersonnaliséeLogement
définition calcul.colocation égal à faux
définition calcul.réduction_loyer_solidarité égal à 0 €
définition calcul.ressources_ménage_arrondies égal à 32200 €
définition calcul.bénéficiaire_aide_adulte_ou_enfant_handicapés égal à faux
définition calcul.logement_meublé_d842_2 égal à faux
définition calcul.résidence égal à Métropole
assertion montant = 153,77 €
assertion calcul.montant_forfaitaire_charges_d823_16 = 127,96 €
assertion calcul.plafond_loyer_d823_16_2 = 618,20 €
assertion calcul.participation_minimale = 55,67 €
assertion calcul.taux_composition_familiale = 1,73%
assertion calcul.participation_personnelle = 495,64 €
```
```catala
déclaration champ d'application Exemple8 :
calcul champ d'application CalculAidePersonnaliséeLogementLocatif
résultat montant contenu argent
champ d'application Exemple8:
définition montant égal à calcul.traitement_aide_finale de calcul.aide_finale_formule
définition calcul.loyer_principal égal à 310 €
définition calcul.date_courante égal à |2022-04-02|
définition calcul.logement_est_chambre égal à vrai
définition
calcul.âgées_ou_handicap_adultes_hébergées_onéreux_particuliers
égal à faux
définition calcul.zone égal à Zone1
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.nombre_personnes_à_charge égal à 0
définition calcul.type_aide égal à AidePersonnaliséeLogement
définition calcul.colocation égal à faux
définition calcul.réduction_loyer_solidarité égal à 0 €
définition calcul.ressources_ménage_arrondies égal à 14800 €
définition calcul.bénéficiaire_aide_adulte_ou_enfant_handicapés égal à faux
définition calcul.logement_meublé_d842_2 égal à faux
définition calcul.résidence égal à Métropole
assertion montant = 11,06 €
assertion calcul.montant_forfaitaire_charges_d823_16 = 54,22 €
assertion calcul.plafond_loyer_d823_16_2 = 268,26 €
assertion calcul.participation_minimale = 35,39 €
assertion calcul.taux_composition_familiale = 3,15%
assertion calcul.participation_personnelle = 306,11 €
```
```catala
déclaration champ d'application Exemple9 :
calcul champ d'application CalculAidePersonnaliséeLogementLocatif
résultat montant contenu argent
champ d'application Exemple9:
définition montant égal à
calcul.traitement_aide_finale de
calcul.aide_finale_formule
définition calcul.loyer_principal égal à 400 €
définition calcul.date_courante égal à |2022-06-10|
définition calcul.logement_est_chambre égal à faux
définition
calcul.âgées_ou_handicap_adultes_hébergées_onéreux_particuliers
égal à faux
définition calcul.zone égal à Zone1
définition calcul.situation_familiale_calcul_apl égal à PersonneSeule
définition calcul.nombre_personnes_à_charge égal à 0
définition calcul.type_aide égal à AidePersonnaliséeLogement
définition calcul.colocation égal à faux
définition calcul.réduction_loyer_solidarité égal à 0 €
# Étudiant, R822-20 CCH et article 6 arrêté 27 septembre 2019
définition calcul.ressources_ménage_arrondies égal à 7800 €
définition calcul.bénéficiaire_aide_adulte_ou_enfant_handicapés égal à faux
définition calcul.logement_meublé_d842_2 égal à faux
définition calcul.résidence égal à Métropole
assertion montant = 210,06 €
```
```catala-test-inline
$ catala Interpret -s Exemple1 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 0,00 €
```
```catala-test-inline
$ catala Interpret -s Exemple2 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 352,77 €
```
```catala-test-inline
$ catala Interpret -s Exemple3 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 321,61 €
```
```catala-test-inline
$ catala Interpret -s Exemple4 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 0,00 €
```
```catala-test-inline
$ catala Interpret -s Exemple5 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 311,56 €
```
```catala-test-inline
$ catala Interpret -s Exemple6 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 0,00 €
```
```catala-test-inline
$ catala Interpret -s Exemple7 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 153,77 €
```
```catala-test-inline
$ catala Interpret -s Exemple8 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 11,06 €
```
```catala-test-inline
$ catala Interpret -s Exemple9 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 210,06 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple1 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 0,00 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple2 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 352,77 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple3 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 321,61 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple4 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 0,00 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple5 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 311,56 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple6 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 0,00 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple7 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 153,77 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple8 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 11,06 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple9 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 210,06 €
```

View File

@ -1,192 +0,0 @@
> Inclusion: ../aides_logement.catala_fr
# Test
```catala
déclaration champ d'application CasTest1 :
calcul champ d'application CalculAidePersonnaliséeLogementFoyer
résultat montant contenu argent
champ d'application CasTest1:
définition calcul.résidence égal à Métropole
définition calcul.date_conventionnement égal à |2022-01-01|
définition calcul.logement_foyer_jeunes_travailleurs égal à faux
définition calcul.type_logement_foyer égal à TypeLogementFoyer.Autre
définition calcul.redevance égal à 360 €
définition calcul.ressources_ménage_arrondies égal à 15 000€
définition calcul.nombre_personnes_à_charge égal à 0
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.zone égal à Zone3
définition calcul.date_courante égal à |2022-04-23|
assertion calcul.coefficient_r_d832_25 = 1217,26 €
assertion calcul.coefficient_multiplicateur_d832_25 = 13393,40 €
assertion calcul.n_nombre_parts_d832_25 = 1,8
assertion calcul.coefficient_prise_en_charge_d832_25 = 0,41
assertion calcul.plafond_équivalence_loyer_éligible = 450,57 €
assertion calcul.équivalence_loyer_minimale = 318,12 €
définition montant égal à calcul.traitement_aide_finale de calcul.aide_finale_formule
assertion montant = 12,06 €
déclaration champ d'application CasTest2 :
calcul champ d'application CalculAllocationLogementFoyer
résultat montant contenu argent
champ d'application CasTest2:
définition calcul.résidence égal à Métropole
définition calcul.date_conventionnement égal à |2022-01-01|
définition calcul.logement_foyer_jeunes_travailleurs égal à faux
définition calcul.type_logement_foyer égal à TypeLogementFoyer.Autre
définition calcul.redevance égal à 360 €
définition calcul.ressources_ménage_arrondies égal à 15 000€
définition calcul.nombre_personnes_à_charge égal à 0
définition calcul.situation_familiale_calcul_apl égal à Couple
définition calcul.zone égal à Zone3
définition calcul.date_courante égal à |2022-04-23|
définition calcul.catégorie_équivalence_loyer_d842_16 égal à
PersonnesÂgéesSelon3DeD842_16
assertion calcul.équivalence_loyer = 320,73 €
assertion calcul.montant_forfaitaire_charges = 54,22 €
assertion calcul.loyer_minimal = 307,96 €
assertion calcul.coefficient_prise_en_charge = 0,43
définition montant égal à
calcul.traitement_aide_finale de
calcul.aide_finale_formule
assertion montant = 23,12 €
```
```catala
# Tiré de la page 34 de
# https://www.ecologie.gouv.fr/sites/default/files/les_aides_personnelles_au_logement_element_de_calcul_septembre_2021.pdf#page=34
déclaration champ d'application CasTest3 :
calcul champ d'application CalculAidePersonnaliséeLogementFoyer
résultat montant contenu argent
champ d'application CasTest3:
définition calcul.résidence égal à Métropole
définition calcul.date_conventionnement égal à |2020-01-01|
définition calcul.logement_foyer_jeunes_travailleurs égal à faux
définition calcul.type_logement_foyer égal à TypeLogementFoyer.Autre
définition calcul.redevance égal à 350 €
définition calcul.ressources_ménage_arrondies égal à 7 500€
définition calcul.nombre_personnes_à_charge égal à 0
définition calcul.situation_familiale_calcul_apl égal à PersonneSeule
définition calcul.zone égal à Zone1
définition calcul.date_courante égal à |2021-09-15|
assertion calcul.équivalence_loyer_éligible = 350 €
assertion calcul.plafond_équivalence_loyer_éligible = 444,43€
assertion calcul.équivalence_loyer_minimale = 98,95 €
assertion calcul.coefficient_prise_en_charge_d832_25 = 0,64
définition montant égal à calcul.traitement_aide_finale de calcul.aide_finale_formule
assertion montant = 154,78 €
```
```catala
# Transmis par DGALN/DHUP/FE4 le 14/07/2022
déclaration champ d'application CasTest4 :
calcul champ d'application CalculAidePersonnaliséeLogementFoyer
résultat montant contenu argent
champ d'application CasTest4:
définition calcul.résidence égal à Métropole
définition calcul.date_conventionnement égal à |2020-01-01|
définition calcul.logement_foyer_jeunes_travailleurs égal à faux
définition calcul.type_logement_foyer égal à TypeLogementFoyer.Autre
définition calcul.redevance égal à 350 €
définition calcul.ressources_ménage_arrondies égal à 7 500€
définition calcul.nombre_personnes_à_charge égal à 0
définition calcul.situation_familiale_calcul_apl égal à PersonneSeule
définition calcul.zone égal à Zone1
définition calcul.date_courante égal à |2022-05-01|
assertion calcul.équivalence_loyer_éligible = 350 €
assertion calcul.plafond_équivalence_loyer_éligible = 446,30€
assertion calcul.équivalence_loyer_minimale = 98,95 €
assertion calcul.coefficient_prise_en_charge_d832_25 = 0,64
définition montant égal à
calcul.traitement_aide_finale de
calcul.aide_finale_formule
assertion montant = 154,78 €
```
```catala
# Transmis par DGALN/DHUP/FE4 le 14/07/2022
déclaration champ d'application CasTest5 :
calcul champ d'application CalculAidePersonnaliséeLogementFoyer
résultat montant contenu argent
champ d'application CasTest5:
définition calcul.résidence égal à Métropole
définition calcul.logement_foyer_jeunes_travailleurs égal à faux
définition calcul.date_conventionnement égal à |2020-01-01|
définition calcul.type_logement_foyer égal à
TypeLogementFoyer.RésidenceSociale
définition calcul.redevance égal à 350 €
définition calcul.ressources_ménage_arrondies égal à 7 500€
définition calcul.nombre_personnes_à_charge égal à 0
définition calcul.situation_familiale_calcul_apl égal à PersonneSeule
définition calcul.zone égal à Zone1
définition calcul.date_courante égal à |2022-05-01|
assertion calcul.équivalence_loyer_éligible = 350 €
assertion calcul.plafond_équivalence_loyer_éligible = 446,30€
assertion calcul.équivalence_loyer_minimale = 124,64 €
assertion calcul.coefficient_prise_en_charge_d832_25 = 0,6
définition montant égal à
calcul.traitement_aide_finale de
calcul.aide_finale_formule
assertion montant = 129,65 €
```
```catala-test-inline
$ catala Interpret -s CasTest1 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 12,06 €
```
```catala-test-inline
$ catala Interpret -s CasTest2 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 23,12 €
```
```catala-test-inline
$ catala Interpret -s CasTest3 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 154,78 €
```
```catala-test-inline
$ catala Interpret -s CasTest4 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 154,78 €
```
```catala-test-inline
$ catala Interpret -s CasTest5 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] montant = 129,65 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s CasTest1 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 12,06 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s CasTest2 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 23,12 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s CasTest3 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 154,78 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s CasTest4 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 154,78 €
```
```catala-test-inline
$ catala Interpret_Lcalc -s CasTest5 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant = 129,65 €
```

View File

@ -1,197 +0,0 @@
> Inclusion: ../aides_logement.catala_fr
# Tests
```catala
# TODO juridique: test à vérifier
déclaration champ d'application Exemple1 :
calculette champ d'application CalculetteAidesAuLogementGardeAlternée
résultat éligibilité contenu booléen
résultat montant_versé contenu argent
champ d'application Exemple1 :
définition éligibilité égal à calculette.éligibilité
définition montant_versé égal à calculette.aide_finale
définition calculette.date_courante égal à |2022-01-01|
définition calculette.ménage égal à Ménage {
-- prestations_reçues: [
PrestationReçue.AllocationSoutienEnfantHandicapé;
PrestationReçue.ComplémentFamilial;
PrestationReçue.AllocationsFamiliales
]
-- situation_familiale: Mariés contenu |2010-11-26|
-- personnes_à_charge: [
EnfantÀCharge contenu (EnfantÀCharge {
-- identifiant: 0
-- nationalité: Française
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- date_de_naissance: |2003-01-01|
-- études_apprentissage_stage_formation_pro_impossibilité_travail: vrai
-- rémuneration_mensuelle: 0€
-- obligation_scolaire: Après
-- situation_garde_alternée: GardeAlternéeCoefficientPriseEnCharge contenu 0,7
}); EnfantÀCharge contenu (EnfantÀCharge {
-- identifiant: 1
-- nationalité: Française
-- études_apprentissage_stage_formation_pro_impossibilité_travail: faux
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- date_de_naissance: |2011-01-01|
-- rémuneration_mensuelle: 0€
-- obligation_scolaire: Pendant
-- situation_garde_alternée: PasDeGardeAlternée
}); EnfantÀCharge contenu (EnfantÀCharge {
-- identifiant: 2
-- nationalité: Française
-- études_apprentissage_stage_formation_pro_impossibilité_travail: faux
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- date_de_naissance: |2014-01-01|
-- rémuneration_mensuelle: 0€
-- obligation_scolaire: Pendant
-- situation_garde_alternée: PasDeGardeAlternée
})]
-- logement: Logement {
-- zone: Zone1
-- résidence_principale : vrai
-- mode_occupation : Locataire contenu (Location {
-- loyer_principal: 1700 €
-- bénéficiaire_aide_adulte_ou_enfant_handicapés: faux
-- logement_est_chambre: faux
-- colocation: faux
-- âgées_ou_handicap_adultes_hébergées_onéreux_particuliers: faux
-- logement_meublé_d842_2: faux
-- changement_logement_d842_4: PasDeChangement
-- bailleur: BailleurSocial contenu (ConventionBailleurSocial{
-- conventionné_livre_III_titre_V_chap_III: vrai
-- réduction_loyer_solidarité_perçue: 0 €
})
})
-- propriétaire : ParentOuAutre.Autre
-- loué_ou_sous_loué_à_des_tiers : LouéOuSousLouéÀDesTiers.Non
-- usufruit : ParentOuAutre.Autre
-- logement_decent_l89_462 : vrai
-- surface_m_carrés : 80
}
-- nombre_autres_occupants_logement: 1
-- condition_rattaché_foyer_fiscal_parent_ifi: faux
-- enfant_à_naître_après_quatrième_mois_grossesse: faux
-- personnes_âgées_handicapées_foyer_r844_4: faux
-- résidence :Métropole
}
définition calculette.demandeur égal à Demandeur {
-- est_non_salarié_agricole_l781_8_l_781_46_code_rural: faux
-- magistrat_fonctionnaire_centre_intérêts_matériels_familiaux_hors_mayotte: faux
-- personne_hébergée_centre_soin_l_L162_22_3_sécurité_sociale: faux
-- date_naissance : |1970-05-02|
-- nationalité : Française
}
définition calculette.ressources_ménage_prises_en_compte égal à 20 000 €
```
```catala
déclaration champ d'application Exemple2 :
calculette champ d'application CalculetteAidesAuLogementGardeAlternée
résultat éligibilité contenu booléen
résultat montant_versé contenu argent
champ d'application Exemple2 :
définition éligibilité égal à calculette.éligibilité
définition montant_versé égal à calculette.aide_finale
définition calculette.date_courante égal à |2023-04-01|
définition calculette.ménage égal à Ménage {
-- prestations_reçues: []
-- situation_familiale: Célibataire
-- personnes_à_charge: [
EnfantÀCharge contenu (EnfantÀCharge {
-- identifiant: 0
-- nationalité: Française
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- date_de_naissance: |2008-01-01|
-- études_apprentissage_stage_formation_pro_impossibilité_travail: vrai
-- rémuneration_mensuelle: 0€
-- obligation_scolaire: Après
-- situation_garde_alternée: PasDeGardeAlternée
}); EnfantÀCharge contenu (EnfantÀCharge {
-- identifiant: 1
-- nationalité: Française
-- études_apprentissage_stage_formation_pro_impossibilité_travail: faux
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- date_de_naissance: |2011-01-01|
-- rémuneration_mensuelle: 0€
-- obligation_scolaire: Pendant
-- situation_garde_alternée: PasDeGardeAlternée
})]
-- logement: Logement {
-- zone: Zone2
-- résidence_principale : vrai
-- mode_occupation : Locataire contenu (Location {
-- loyer_principal: 500 €
-- bénéficiaire_aide_adulte_ou_enfant_handicapés: faux
-- logement_est_chambre: faux
-- colocation: faux
-- âgées_ou_handicap_adultes_hébergées_onéreux_particuliers: faux
-- logement_meublé_d842_2: faux
-- changement_logement_d842_4: PasDeChangement
-- bailleur: BailleurPrivé
})
-- propriétaire : ParentOuAutre.Autre
-- loué_ou_sous_loué_à_des_tiers : LouéOuSousLouéÀDesTiers.Non
-- usufruit : ParentOuAutre.Autre
-- logement_decent_l89_462 : vrai
-- surface_m_carrés : 60
}
-- nombre_autres_occupants_logement: 0
-- condition_rattaché_foyer_fiscal_parent_ifi: faux
-- enfant_à_naître_après_quatrième_mois_grossesse: faux
-- personnes_âgées_handicapées_foyer_r844_4: faux
-- résidence : SaintPierreEtMiquelon
}
définition calculette.demandeur égal à Demandeur {
-- est_non_salarié_agricole_l781_8_l_781_46_code_rural: faux
-- magistrat_fonctionnaire_centre_intérêts_matériels_familiaux_hors_mayotte: faux
-- personne_hébergée_centre_soin_l_L162_22_3_sécurité_sociale: faux
-- date_naissance : |1970-05-02|
-- nationalité : Française
}
définition calculette.ressources_ménage_prises_en_compte égal à 12 500 €
```
```catala-test-inline
$ catala Interpret -s Exemple1
[RESULT] Computation successful! Results:
[RESULT] montant_versé = 246,23 €
[RESULT] éligibilité = vrai
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple1 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant_versé = 246,23 €
[RESULT] éligibilité = vrai
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple1 --avoid-exceptions -O --closure-conversion
[RESULT] Computation successful! Results:
[RESULT] montant_versé = 246,23 €
[RESULT] éligibilité = vrai
```
```catala-test-inline
$ catala Interpret -s Exemple2
[RESULT] Computation successful! Results:
[RESULT] montant_versé = 230,63 €
[RESULT] éligibilité = vrai
```
```catala-test-inline
$ catala Interpret_lcalc -s Exemple2 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] montant_versé = 230,63 €
[RESULT] éligibilité = vrai
```
```catala-test-inline
$ catala Interpret_lcalc -s Exemple2 -O --avoid-exceptions --closure-conversion
[RESULT] Computation successful! Results:
[RESULT] montant_versé = 230,63 €
[RESULT] éligibilité = vrai
```

View File

@ -1,257 +0,0 @@
> Inclusion: ../aides_logement.catala_fr
# Tests
```catala
déclaration champ d'application Exemple1 :
éligibilité champ d'application ÉligibilitéAidePersonnaliséeLogement
résultat éligible contenu booléen
champ d'application Exemple1 :
définition éligible égal à éligibilité.éligibilité
assertion éligible
définition éligibilité.date_courante égal à |2020-03-10|
définition éligibilité.ménage égal à Ménage {
-- résidence: Métropole
-- prestations_reçues: [
PrestationReçue.AllocationSoutienEnfantHandicapé;
PrestationReçue.ComplémentFamilial;
PrestationReçue.AllocationsFamiliales
]
-- situation_familiale: Mariés contenu |2010-11-26|
-- personnes_à_charge: [
EnfantÀCharge contenu (EnfantÀCharge {
-- nationalité: Française
-- identifiant: 0
-- études_apprentissage_stage_formation_pro_impossibilité_travail: vrai
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- date_de_naissance: |2001-01-01|
-- rémuneration_mensuelle: 0€
-- obligation_scolaire: Après
-- situation_garde_alternée: PasDeGardeAlternée
}); EnfantÀCharge contenu (EnfantÀCharge {
-- nationalité: Française
-- identifiant: 1
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- date_de_naissance: |2009-01-01|
-- études_apprentissage_stage_formation_pro_impossibilité_travail: faux
-- rémuneration_mensuelle: 0€
-- obligation_scolaire: Pendant
-- situation_garde_alternée: PasDeGardeAlternée
}); EnfantÀCharge contenu (EnfantÀCharge {
-- nationalité: Française
-- identifiant: 2
-- études_apprentissage_stage_formation_pro_impossibilité_travail: faux
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- date_de_naissance: |2012-01-01|
-- rémuneration_mensuelle: 0€
-- obligation_scolaire: Pendant
-- situation_garde_alternée: PasDeGardeAlternée
})]
-- logement: Logement {
-- zone: Zone1
-- résidence_principale : vrai
-- mode_occupation : Locataire contenu (Location {
-- loyer_principal: 750 €
-- bénéficiaire_aide_adulte_ou_enfant_handicapés: faux
-- logement_est_chambre: faux
-- colocation: faux
-- âgées_ou_handicap_adultes_hébergées_onéreux_particuliers: faux
-- logement_meublé_d842_2: faux
-- changement_logement_d842_4: PasDeChangement
-- bailleur: BailleurSocial contenu (ConventionBailleurSocial{
-- conventionné_livre_III_titre_V_chap_III: vrai
-- réduction_loyer_solidarité_perçue: 0 €
})
})
-- propriétaire : ParentOuAutre.Autre
-- loué_ou_sous_loué_à_des_tiers : LouéOuSousLouéÀDesTiers.Non
-- usufruit : ParentOuAutre.Autre
-- logement_decent_l89_462 : vrai
-- surface_m_carrés : 80
}
-- nombre_autres_occupants_logement: 1
-- condition_rattaché_foyer_fiscal_parent_ifi: faux
-- enfant_à_naître_après_quatrième_mois_grossesse: faux
-- personnes_âgées_handicapées_foyer_r844_4: faux
}
définition éligibilité.demandeur égal à Demandeur {
-- date_naissance : |1970-05-02|
-- est_non_salarié_agricole_l781_8_l_781_46_code_rural: faux
-- magistrat_fonctionnaire_centre_intérêts_matériels_familiaux_hors_mayotte: faux
-- nationalité : Française
-- personne_hébergée_centre_soin_l_L162_22_3_sécurité_sociale: faux
}
déclaration champ d'application Exemple2 :
éligibilité champ d'application ÉligibilitéAllocationLogement
résultat éligible contenu TypeÉligibilitéAllocationLogement
champ d'application Exemple2 :
définition éligible égal à éligibilité.éligibilité
assertion éligible = TypeÉligibilitéAllocationLogement.AllocationLogementFamiliale
définition éligibilité.date_courante égal à |2022-05-01|
définition éligibilité.ménage égal à Ménage {
-- résidence: Métropole
-- prestations_reçues: [
PrestationReçue.AllocationsFamiliales
]
-- situation_familiale: Concubins
-- personnes_à_charge: [
EnfantÀCharge contenu (EnfantÀCharge {
-- identifiant: 0
-- nationalité: Française
-- études_apprentissage_stage_formation_pro_impossibilité_travail: faux
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- date_de_naissance: |2016-01-01|
-- rémuneration_mensuelle: 0€
-- obligation_scolaire: Pendant
-- situation_garde_alternée: PasDeGardeAlternée
}); EnfantÀCharge contenu (EnfantÀCharge {
-- nationalité: Française
-- études_apprentissage_stage_formation_pro_impossibilité_travail: faux
-- identifiant: 1
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- date_de_naissance: |2015-01-01|
-- rémuneration_mensuelle: 0€
-- obligation_scolaire: Pendant
-- situation_garde_alternée: PasDeGardeAlternée
})]
-- logement: Logement {
-- zone: Zone2
-- résidence_principale : vrai
-- mode_occupation : Locataire contenu (Location {
-- bailleur: BailleurSocial contenu (ConventionBailleurSocial{
-- conventionné_livre_III_titre_V_chap_III: vrai
-- réduction_loyer_solidarité_perçue: 0 €
})
-- loyer_principal: 450 €
-- bénéficiaire_aide_adulte_ou_enfant_handicapés: faux
-- logement_est_chambre: faux
-- colocation: faux
-- âgées_ou_handicap_adultes_hébergées_onéreux_particuliers: faux
-- logement_meublé_d842_2: faux
-- changement_logement_d842_4: PasDeChangement
})
-- propriétaire : ParentOuAutre.Autre
-- loué_ou_sous_loué_à_des_tiers : LouéOuSousLouéÀDesTiers.Non
-- usufruit : ParentOuAutre.Autre
-- logement_decent_l89_462 : vrai
-- surface_m_carrés : 60
}
-- nombre_autres_occupants_logement: 0
-- condition_rattaché_foyer_fiscal_parent_ifi: faux
-- enfant_à_naître_après_quatrième_mois_grossesse: faux
-- personnes_âgées_handicapées_foyer_r844_4: faux
}
définition éligibilité.demandeur égal à Demandeur {
-- est_non_salarié_agricole_l781_8_l_781_46_code_rural: faux
-- magistrat_fonctionnaire_centre_intérêts_matériels_familiaux_hors_mayotte: faux
-- date_naissance : |1992-01-01|
-- nationalité : Française
-- personne_hébergée_centre_soin_l_L162_22_3_sécurité_sociale: faux
}
définition éligibilité.bénéficie_aide_personnalisée_logement égal à faux
déclaration champ d'application Exemple3 :
éligibilité champ d'application ÉligibilitéAllocationLogement
résultat éligible contenu TypeÉligibilitéAllocationLogement
champ d'application Exemple3 :
définition éligible égal à éligibilité.éligibilité
assertion éligible = TypeÉligibilitéAllocationLogement.AllocationLogementFamiliale
définition éligibilité.date_courante égal à |2023-04-01|
définition éligibilité.ménage égal à Ménage {
-- résidence: LaRéunion
-- prestations_reçues: [
PrestationReçue.AllocationsFamiliales
]
-- situation_familiale: Concubins
-- personnes_à_charge: [
EnfantÀCharge contenu (EnfantÀCharge {
-- identifiant: 0
-- nationalité: Française
-- études_apprentissage_stage_formation_pro_impossibilité_travail: faux
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- date_de_naissance: |2016-01-01|
-- rémuneration_mensuelle: 0€
-- obligation_scolaire: Pendant
-- situation_garde_alternée: PasDeGardeAlternée
})]
-- logement: Logement {
-- zone: Zone2
-- résidence_principale : vrai
-- mode_occupation : Locataire contenu (Location {
-- bailleur: BailleurPrivé
-- loyer_principal: 375 €
-- bénéficiaire_aide_adulte_ou_enfant_handicapés: faux
-- logement_est_chambre: faux
-- colocation: faux
-- âgées_ou_handicap_adultes_hébergées_onéreux_particuliers: faux
-- logement_meublé_d842_2: faux
-- changement_logement_d842_4: PasDeChangement
})
-- propriétaire : ParentOuAutre.Autre
-- loué_ou_sous_loué_à_des_tiers : LouéOuSousLouéÀDesTiers.Non
-- usufruit : ParentOuAutre.Autre
-- logement_decent_l89_462 : vrai
-- surface_m_carrés : 60
}
-- nombre_autres_occupants_logement: 0
-- condition_rattaché_foyer_fiscal_parent_ifi: faux
-- enfant_à_naître_après_quatrième_mois_grossesse: faux
-- personnes_âgées_handicapées_foyer_r844_4: faux
}
définition éligibilité.demandeur égal à Demandeur {
-- est_non_salarié_agricole_l781_8_l_781_46_code_rural: faux
-- magistrat_fonctionnaire_centre_intérêts_matériels_familiaux_hors_mayotte: faux
-- date_naissance : |1992-01-01|
-- nationalité : Française
-- personne_hébergée_centre_soin_l_L162_22_3_sécurité_sociale: faux
}
définition éligibilité.bénéficie_aide_personnalisée_logement égal à faux
```
```catala-test-inline
$ catala Interpret -s Exemple1 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] éligible = vrai
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple1 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] éligible = vrai
```
```catala-test-inline
$ catala Interpret -s Exemple2 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] éligible = AllocationLogementFamiliale ()
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple2 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] éligible = AllocationLogementFamiliale ()
```
```catala-test-inline
$ catala Interpret -s Exemple3 --disable-warnings
[RESULT] Computation successful! Results:
[RESULT] éligible = AllocationLogementFamiliale ()
```
```catala-test-inline
$ catala Interpret_Lcalc -s Exemple3 --avoid-exceptions
[RESULT] Computation successful! Results:
[RESULT] éligible = AllocationLogementFamiliale ()
```
```catala-test-inline
$ catala Typecheck
[RESULT] Typechecking successful!
```

View File

@ -1,15 +0,0 @@
> Inclusion: ../aides_logement.catala_fr
# Ce fichier est uniquement là pour vérifier que les invariants structurels sont bien garanties par les differences phases de compilation.
```catala-test-inline
$ catala Typecheck --check-invariants
[RESULT] Invariant typing_defaults checked. result: [24676/24676]
[RESULT] Invariant match_inversion checked. result: [771/771]
[RESULT] Invariant app_inversion checked. result: [267/267]
[RESULT] Invariant no_return_a_function checked. result: [3046/3046]
[RESULT] Invariant no_partial_evaluation checked. result: [267/267]
[RESULT] Invariant default_no_arrow checked. result: [1332/1332]
[RESULT] Typechecking successful!
```

View File

@ -1,19 +0,0 @@
*.aux
*.dvi
*.fdb_latexmk
*.fls
*.log
*.out
*.fls
*.tex
*.pdf
*.html
_minted*
*.toc
*.pyg
*.d
*.new
*.ml
*.py
*.xdv
*.json

View File

@ -1,4 +0,0 @@
CATALA_LANG=fr
SRC=allocations_familiales.catala_fr
include ../Makefile.common.mk

View File

@ -1,17 +0,0 @@
> Inclusion: prologue.catala_fr
> Inclusion: ../smic/smic.catala_fr
> Inclusion: ../base_mensuelle_allocations_familiales/bmaf.catala_fr
> Inclusion: autres_codes.catala_fr
> Inclusion: securite_sociale_L.catala_fr
> Inclusion: securite_sociale_R.catala_fr
> Inclusion: securite_sociale_D.catala_fr
> Inclusion: decrets_divers.catala_fr
> Inclusion: epilogue.catala_fr

View File

@ -1,26 +0,0 @@
# Code de la construction et de l'habitation
## Partie législative
### Livre VIII : Aides personnelles au logement
#### Titre II : Dispositions communes aux aides personnelles au logement
##### Chapitre Ier : Principes généraux
###### Section 2 : Règles de non-cumul
####### Sous-section 1 : Aides personnelles au logement
######## Article L821-3 | LEGIARTI000038814972
Lorsqu'un enfant est bénéficiaire, à titre personnel, de l'aide
personnelle au logement, il n'est pas pris en compte, comme enfant
à charge, pour le bénéfice des prestations familiales.
```catala
champ d'application PrestationsFamiliales:
exception cas_base règle droit_ouvert de enfant sous condition
enfant.bénéficie_titre_personnel_aide_personnelle_logement
conséquence non rempli
```

View File

@ -1,510 +0,0 @@
# Montant des plafonds de ressources
## Circulaire interministérielle N° DSS/SD2B/2017/352 du 22 décembre 2017 relative à la revalorisation au 1er janvier 2018 des plafonds de ressources dattribution de certaines prestations familiales servies en métropole, en Guadeloupe, en Guyane, en Martinique, à la Réunion, à Saint-Barthélemy, à Saint-Martin et à Mayotte
Plafonds de ressources applicables pour lattribution du montant modulé
des allocations familiales, de la majoration pour âge et de lallocation
forfaitaire, du 1er janvier 2018 au 31 décembre 2018 (à comparer au revenu
net catégoriel de l'année 2016).
La première tranche est celle dont les revenus sont inférieurs ou égaux
à un plafond de base de 56 286 € majoré de 5 628 euros par enfant
à charge. La deuxième tranche est celle dont les revenus sont supérieurs à un
plafond de base de 56 286 euros majoré de 5 628 euros par enfant à charge mais
inférieurs ou égaux au plafond de base de 78 770 euros majoré de 5 628 euros
par enfant à charge. La troisième tranche est celle dont les revenus
sont supérieurs au plafond de base de 78 770 euros majoré de
5 628 euros par enfant à charge.
```catala
champ d'application AllocationsFamiliales :
exception
définition plafond_I_d521_3 sous condition
date_courante >= |2018-01-01| et date_courante <= |2018-12-31|
conséquence égal à 56 286 € +
5 628 € * (décimal de
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale))
exception
définition plafond_II_d521_3 sous condition
date_courante >= |2018-01-01| et date_courante <= |2018-12-31|
conséquence égal à 78 770 € +
5 628 € * (décimal de
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale))
```
## Instruction interministérielle n° DSS/SD2B/2018/279 du 17 décembre 2018 relative à la revalorisation au 1er janvier 2019 des plafonds de ressources dattribution de certaines prestations familiales servies en métropole, en Guadeloupe, en Guyane, en Martinique, à la Réunion, à Saint-Barthélemy, à Saint-Martin et à Mayotte
Plafonds de ressources applicables pour lattribution du montant
modulé des allocations familiales, de la majoration pour âge et
de lallocation forfaitaire, du 1er janvier 2019 au 31 décembre
2019 (à comparer au revenu net catégoriel de l'année 2017).
La première tranche est celle dont les revenus sont inférieurs ou
égaux à un plafond de base de 56 849 € majoré de 5 684 euros
par enfant à charge. La deuxième tranche est celle dont les revenus sont
supérieurs à un plafond de base de 56 849 euros majoré de 5 684 euros
par enfant à charge mais inférieurs ou égaux au plafond de base de
79 558 euros majoré de 5 684 euros par enfant à charge. La troisième
tranche est celle dont les revenus sont supérieurs au plafond de
base de 79 558 euros majoré de 5 684 euros par enfant à charge.
```catala
champ d'application AllocationsFamiliales :
exception
définition plafond_I_d521_3 sous condition
date_courante >= |2019-01-01| et date_courante <= |2019-12-31|
conséquence égal à 56 849 € +
5 684 € * (décimal de
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale))
exception
définition plafond_II_d521_3 sous condition
date_courante >= |2019-01-01| et date_courante <= |2019-12-31|
conséquence égal à 79 558 € +
5 684 € * (décimal de
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale))
```
## Instruction interministerielle no DSS/SD2B/2019/261 du 18 décembre 2019 relative à la revalorisation au 1er janvier 2020 des plafonds de ressources dattribution de certaines prestations familiales servies en métropole, en Guadeloupe, en Guyane, en Martinique, à La Réunion, à Saint-Barthélemy, à Saint-Martin et à Mayotte
Plafonds de ressources applicables pour lattribution du montant modulé des
allocations familiales, de la majoration pour âge et de lallocation forfaitaire,
du 1er janvier 2020 au 31 décembre 2020 (à comparer au revenu net catégoriel de
lannée 2018)
La première tranche est celle dont les revenus sont inférieurs ou
égaux à un plafond de base de 57 759 € majoré de 5 775 € par
enfant à charge. La deuxième tranche est celle dont les revenus
sont supérieurs à un plafond de base de 57 759 € majoré de 5 775
€ par enfant à charge mais inférieurs ou égaux au plafond de base
de 80 831 € majoré de 5 775 € par enfant à charge. La troisième
tranche est celle dont les revenus sont supérieurs au plafond de base de
80 831 € majoré de 5 775 € par enfant à charge.
```catala
champ d'application AllocationsFamiliales :
exception
définition plafond_I_d521_3 sous condition
date_courante >= |2020-01-01| et date_courante <= |2020-12-31|
conséquence égal à 57 759 € +
5 775 € * (décimal de
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale))
exception
définition plafond_II_d521_3 sous condition
date_courante >= |2020-01-01| et date_courante <= |2020-12-31|
conséquence égal à 80 831 € +
5 775 € * (décimal de
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale))
```
## Arrêté du 14 décembre 2020 relatif au montant des plafonds de ressources de certaines prestations familiales et aux tranches du barème applicable au recouvrement des indus et à la saisie des prestations
### Article 1|JORFARTI000042694985
I. - Le plafond de ressources prévu au 1° du I des articles D. 521-1 et D. 521-2
du code de la sécurité sociale relatif aux allocations familiales, à la majoration
pour âge et à l'allocation forfaitaire prévue au deuxième alinéa de l'article
L. 521-1 est fixé à 58 279 euros pour la période du 1er janvier 2021 au 31
décembre 2021. Il est majoré de 5 827 euros par enfant à charge.
```catala
champ d'application AllocationsFamiliales :
exception
définition plafond_I_d521_3 sous condition
date_courante >= |2021-01-01| et date_courante <= |2021-12-31|
conséquence égal à 58 279 € +
5 827 € * (décimal de
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale))
```
II. - Le plafond de ressources prévu au 2° du I des articles D. 521-1 et
D. 521-2 du même code relatif aux allocations familiales, à la majoration
pour âge et à l'allocation forfaitaire prévue au deuxième alinéa de l'article
L. 521-1 est fixé à 81 558 euros pour la période du 1er janvier 2021 au 31
décembre 2021. Il est majoré de 5 827 euros par enfant à charge.
```catala
champ d'application AllocationsFamiliales :
exception
définition plafond_II_d521_3 sous condition
date_courante >= |2021-01-01| et date_courante <= |2021-12-31|
conséquence égal à 81 558 € +
5 827 € * (décimal de
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale))
```
# Dispositions spéciales relatives à Mayotte
## Décret n°2002-423 du 29 mars 2002 relatif aux prestations familiales à Mayotte
### Article 7|LEGIARTI000036330048
Les taux servant au calcul des allocations familiales sont fixés, en
pourcentage de la base mensuelle de calcul des allocations familiales
prévue à l'article L. 551-1 du code de la sécurité sociale, ainsi qu'il suit :
```catala
champ d'application AllocationsFamiliales sous condition résidence = Mayotte:
# La formule change à Mayotte par rapport au cas général.
exception définition montant_initial_base égal à
montant_initial_base_premier_enfant +
montant_initial_base_deuxième_enfant +
montant_initial_base_troisième_enfant_mayotte +
montant_initial_base_quatrième_enfant_et_plus_mayotte
exception
règle droit_ouvert_base sous condition
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale >= 1)
conséquence rempli
```
1° 5,88 % pour un seul enfant à charge ;
```catala
champ d'application AllocationsFamiliales sous condition résidence = Mayotte :
étiquette mayotte exception base
définition montant_initial_base_premier_enfant égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 0
alors bmaf.montant * 5,88 %
sinon 0 €
```
2° 32 % pour deux enfants à charge ;
```catala
champ d'application AllocationsFamiliales sous condition résidence = Mayotte:
étiquette mayotte exception base
définition montant_initial_base_deuxième_enfant égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 1
alors bmaf.montant * 32 %
sinon 0 €
```
3° 16 % pour le troisième enfant à charge ;
```catala
champ d'application AllocationsFamiliales :
définition montant_initial_base_troisième_enfant_mayotte égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 2
alors bmaf.montant * 16 %
sinon 0 €
```
4° 4,63 % pour le quatrième enfant à charge et chacun des suivants.
```catala
champ d'application AllocationsFamiliales :
définition montant_initial_base_quatrième_enfant_et_plus_mayotte égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 3
alors (bmaf.montant * 4,63 %) * (
décimal de
((nombre de enfants_à_charge_droit_ouvert_prestation_familiale) - 3)
) sinon 0 €
```
### Annexe | LEGIARTI000036326574
ANNEXE
TABLEAU D'ÉVOLUTION DES TAUX SERVANT AU CALCUL DES ALLOCATIONS FAMILIALES
APPLICABLES DANS LE DÉPARTEMENT DE MAYOTTE POUR LA PÉRIODE DU 1ER JANVIER
2012 AU 1ER JANVIER 2021, FIXÉS EN APPLICATION DE L'ARTICLE 7 DE L'ORDONNANCE
N° 2002-149 DU 7 FÉVRIER 2002 MODIFIÉE SUSVISÉE
Les taux servant au calcul des allocations familiales (AF) sont fixés, dans le
tableau ci-après, au 1er janvier de chaque année, en pourcentage de la base
mensuelle de calcul des allocations familiales (BMAF) prévue à l'article L.
551-1 du code de la sécurité sociale.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Année Montant AF pour les Taux BMAF pour les Taux BMAF pour les familles Taux BMAF pour les familles Taux BMAF pour le Taux BMAF par enfant
familles ayant un enfant familles ayant un ayant deux enfants à charge ayant trois enfants à charge 3e enfant à charge supplémentaire à partir
à charge avant le 1er enfant à charge à compter du 4e enfant à charge
janvier 2012 du 1er janvier 2012
----------------- ------------------------ ------------------------- --------------------------- ---------------------------- ------------------ -----------------------
2011 57,28 € 14,50 % 23,2 % 27,83 % 4,63 % 4,63 %
2012 57,28 € 13,93 % 23,79 % 29,18 % 5,39 % 4,63 %
2013 57,28 € 13,35 % 24,37 % 30,52 % 6,15 % 4,63 %
2014 57,28 € 12,78 % 24,96 % 31,86 % 6,90 % 4,63 %
2015 57,28 € 12,20 % 25,55 % 33,21 % 7,66 % 4,63 %
2016 57,28 € 11,63 % 26,13 % 34,55 % 8,42 % 4,63 %
2017 57,28 € 11,05 % 26,72 % 35,90 % 9,18 % 4,63 %
2018 57,28 € 9,76 % 28,04 % 38,93 % 10,89 % 4,63 %
2019 57,28 € 8,47 % 29,36 % 41,95 % 12,59 % 4,63 %
2020 57,28 € 7,17 % 30,68 % 44,98 % 14,30 % 4,63 %
A compter de 2021 57,28 € 5,88 % 32 % 48 % 16 % 4,63 %
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
```catala
champ d'application AllocationsFamiliales sous condition résidence = Mayotte:
# Premier enfant
exception mayotte définition montant_initial_base_premier_enfant
sous condition
date_courante >= |2011-01-01| et date_courante <= |2011-12-31| et
non avait_enfant_à_charge_avant_1er_janvier_2012
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 0
alors bmaf.montant * 14,50 %
sinon 0 €
exception mayotte définition montant_initial_base_premier_enfant
sous condition
date_courante >= |2012-01-01| et date_courante <= |2012-12-31| et
non avait_enfant_à_charge_avant_1er_janvier_2012
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 0
alors bmaf.montant * 13,93 %
sinon 0 €
exception mayotte définition montant_initial_base_premier_enfant
sous condition
date_courante >= |2013-01-01| et date_courante <= |2013-12-31| et
non avait_enfant_à_charge_avant_1er_janvier_2012
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 0
alors bmaf.montant * 13,35 %
sinon 0 €
exception mayotte définition montant_initial_base_premier_enfant
sous condition
date_courante >= |2014-01-01| et date_courante <= |2014-12-31| et
non avait_enfant_à_charge_avant_1er_janvier_2012
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 0
alors bmaf.montant * 12,78 %
sinon 0 €
exception mayotte définition montant_initial_base_premier_enfant
sous condition
date_courante >= |2015-01-01| et date_courante <= |2015-12-31| et
non avait_enfant_à_charge_avant_1er_janvier_2012
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 0
alors bmaf.montant * 12,20 %
sinon 0 €
exception mayotte définition montant_initial_base_premier_enfant
sous condition
date_courante >= |2016-01-01| et date_courante <= |2016-12-31| et
non avait_enfant_à_charge_avant_1er_janvier_2012
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 0
alors bmaf.montant * 11,63 %
sinon 0 €
exception mayotte définition montant_initial_base_premier_enfant
sous condition
date_courante >= |2017-01-01| et date_courante <= |2017-12-31| et
non avait_enfant_à_charge_avant_1er_janvier_2012
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 0
alors bmaf.montant * 11,05 %
sinon 0 €
exception mayotte définition montant_initial_base_premier_enfant
sous condition
date_courante >= |2018-01-01| et date_courante <= |2018-12-31| et
non avait_enfant_à_charge_avant_1er_janvier_2012
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 0
alors bmaf.montant * 9,76 %
sinon 0 €
exception mayotte définition montant_initial_base_premier_enfant
sous condition
date_courante >= |2019-01-01| et date_courante <= |2019-12-31| et
non avait_enfant_à_charge_avant_1er_janvier_2012
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 0
alors bmaf.montant * 8,47 %
sinon 0 €
exception mayotte définition montant_initial_base_premier_enfant
sous condition
date_courante >= |2020-01-01| et date_courante <= |2020-12-31| et
non avait_enfant_à_charge_avant_1er_janvier_2012
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 0
alors bmaf.montant * 7,17%
sinon 0 €
exception mayotte définition montant_initial_base_premier_enfant
sous condition
avait_enfant_à_charge_avant_1er_janvier_2012
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 0
alors 57,28€
sinon 0 €
# Deuxième enfant
exception mayotte définition montant_initial_base_deuxième_enfant
sous condition
date_courante >= |2011-01-01| et date_courante <= |2011-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 1
alors bmaf.montant * 23,2 %
sinon 0 €
exception mayotte définition montant_initial_base_deuxième_enfant
sous condition
date_courante >= |2012-01-01| et date_courante <= |2012-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 1
alors bmaf.montant * 23,79 %
sinon 0 €
exception mayotte définition montant_initial_base_deuxième_enfant
sous condition
date_courante >= |2013-01-01| et date_courante <= |2013-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 1
alors bmaf.montant * 24,37 %
sinon 0 €
exception mayotte définition montant_initial_base_deuxième_enfant
sous condition
date_courante >= |2014-01-01| et date_courante <= |2014-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 1
alors bmaf.montant * 24,96 %
sinon 0 €
exception mayotte définition montant_initial_base_deuxième_enfant
sous condition
date_courante >= |2015-01-01| et date_courante <= |2015-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 1
alors bmaf.montant * 25,55 %
sinon 0 €
exception mayotte définition montant_initial_base_deuxième_enfant
sous condition
date_courante >= |2016-01-01| et date_courante <= |2016-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 1
alors bmaf.montant * 26,13 %
sinon 0 €
exception mayotte définition montant_initial_base_deuxième_enfant
sous condition
date_courante >= |2017-01-01| et date_courante <= |2017-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 1
alors bmaf.montant * 26,72 %
sinon 0 €
exception mayotte définition montant_initial_base_deuxième_enfant
sous condition
date_courante >= |2018-01-01| et date_courante <= |2018-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 1
alors bmaf.montant * 28,04 %
sinon 0 €
exception mayotte définition montant_initial_base_deuxième_enfant
sous condition
date_courante >= |2019-01-01| et date_courante <= |2019-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 1
alors bmaf.montant * 29,36 %
sinon 0 €
exception mayotte définition montant_initial_base_deuxième_enfant
sous condition
date_courante >= |2020-01-01| et date_courante <= |2020-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 1
alors bmaf.montant * 30,68 %
sinon 0 €
# Troisième enfant
exception définition montant_initial_base_troisième_enfant_mayotte
sous condition
date_courante >= |2011-01-01| et date_courante <= |2011-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 2
alors bmaf.montant * 4,63 %
sinon 0 €
exception définition montant_initial_base_troisième_enfant_mayotte
sous condition
date_courante >= |2012-01-01| et date_courante <= |2012-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 2
alors bmaf.montant * 5,39 %
sinon 0 €
exception définition montant_initial_base_troisième_enfant_mayotte
sous condition
date_courante >= |2013-01-01| et date_courante <= |2013-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 2
alors bmaf.montant * 6,15 %
sinon 0 €
exception définition montant_initial_base_troisième_enfant_mayotte
sous condition
date_courante >= |2014-01-01| et date_courante <= |2014-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 2
alors bmaf.montant * 6,90 %
sinon 0 €
exception définition montant_initial_base_troisième_enfant_mayotte
sous condition
date_courante >= |2015-01-01| et date_courante <= |2015-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 2
alors bmaf.montant * 7,66 %
sinon 0 €
exception définition montant_initial_base_troisième_enfant_mayotte
sous condition
date_courante >= |2016-01-01| et date_courante <= |2016-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 2
alors bmaf.montant * 8,42 %
sinon 0 €
exception définition montant_initial_base_troisième_enfant_mayotte
sous condition
date_courante >= |2017-01-01| et date_courante <= |2017-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 2
alors bmaf.montant * 9,18 %
sinon 0 €
exception définition montant_initial_base_troisième_enfant_mayotte
sous condition
date_courante >= |2018-01-01| et date_courante <= |2018-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 2
alors bmaf.montant * 10,89 %
sinon 0 €
exception définition montant_initial_base_troisième_enfant_mayotte
sous condition
date_courante >= |2019-01-01| et date_courante <= |2019-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 2
alors bmaf.montant * 12,59 %
sinon 0 €
exception définition montant_initial_base_troisième_enfant_mayotte
sous condition
date_courante >= |2020-01-01| et date_courante <= |2020-12-31|
conséquence égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 2
alors bmaf.montant * 14,30 %
sinon 0 €
```

View File

@ -1,39 +0,0 @@
(rule
(targets allocations_familiales.ml allocations_familiales_api_web.ml)
(deps
(source_tree ..)
%{workspace_root}/compiler/plugins/api_web%{ext_plugin})
(action
(chdir
%{workspace_root}
(run
catala
api_web
-t
--plugin-dir=compiler/plugins
%{dep:allocations_familiales.catala_fr}))))
(rule
(targets allocations_familiales_schema.json)
(deps
(source_tree ..)
%{workspace_root}/compiler/plugins/json_schema%{ext_plugin})
(action
(chdir
%{workspace_root}
(run
catala
json_schema
-t
--plugin-dir=compiler/plugins
--scope=InterfaceAllocationsFamiliales
%{dep:allocations_familiales.catala_fr}))))
(rule
(target allocations_familiales.py)
(deps
(source_tree ..))
(action
(chdir
%{workspace_root}
(run catala Python -O %{dep:allocations_familiales.catala_fr}))))

View File

@ -1,140 +0,0 @@
# Épilogue
## Règles diverses
Les textes législatifs et règlementaires contiennent toutes les informations
kécessaires au calcul. Cependant, certaines règles de calcul sont implicites
dans ces textes et doivent être explicitées pour le calcul informatique. C'est
la fonction du bloc de code ci-dessous.
```catala-metadata
champ d'application EnfantLePlusÂgé:
définition le_plus_âgé égal à
potentiel_plus_âgé parmi enfants tel que
potentiel_plus_âgé.date_de_naissance est minimum
ou si liste vide alors Enfant {
-- identifiant: -1
-- obligation_scolaire: Pendant
-- rémuneration_mensuelle: 0€
-- date_de_naissance: |2999-12-31|
-- prise_en_charge: EffectiveEtPermanente
-- a_déjà_ouvert_droit_aux_allocations_familiales: faux
-- bénéficie_titre_personnel_aide_personnelle_logement: faux
}
champ d'application AllocationsFamiliales:
définition montant_initial_métropole_majoration de enfant sous condition
non (droit_ouvert_majoration de enfant)
conséquence égal à 0 €
règle droit_ouvert_complément rempli
définition enfant_le_plus_âgé.enfants égal à enfants_à_charge
définition est_enfant_le_plus_âgé de enfant égal à
enfant_le_plus_âgé.le_plus_âgé = enfant
définition montant_versé_base égal à
si droit_ouvert_base alors montant_avec_garde_alternée_base sinon 0€
définition montant_versé_majoration égal à
si droit_ouvert_base alors
somme argent de (montant_avec_garde_alternée_majoration de enfant)
pour enfant parmi enfants_à_charge
sinon 0€
définition montant_versé égal à
si droit_ouvert_base alors
montant_versé_base +
montant_versé_majoration +
montant_versé_forfaitaire +
montant_versé_complément_pour_base_et_majoration +
montant_versé_complément_pour_forfaitaire
sinon 0€
```
## Interface du programme
Le calcul des allocations familiales nécessite un certain nombre d'informations
sur les enfants à charge. Certaines de ces informations sont dépendantes les
unes des autres : par exemple, l'âge de l'enfant se déduit de sa date de
naissance. Le but du block ci-dessous est d'encoder ces dépendances, de telle
sorte que l'utilisateur puisse ne doive saisir que le nombre minimal
d'informations sur les enfants à charge.
```catala-metadata
déclaration structure EnfantEntrée:
donnée d_identifiant contenu entier
donnée d_rémuneration_mensuelle contenu argent
donnée d_date_de_naissance contenu date
donnée d_prise_en_charge contenu PriseEnCharge
donnée d_a_déjà_ouvert_droit_aux_allocations_familiales contenu booléen
donnée d_bénéficie_titre_personnel_aide_personnelle_logement contenu booléen
déclaration champ d'application InterfaceAllocationsFamiliales:
entrée i_date_courante contenu date
entrée i_enfants contenu liste de EnfantEntrée
interne enfants_à_charge contenu liste de Enfant
allocations_familiales champ d'application AllocationsFamiliales
entrée i_ressources_ménage contenu argent
entrée i_résidence contenu Collectivité
résultat i_montant_versé contenu argent
entrée i_personne_charge_effective_permanente_est_parent condition
entrée i_personne_charge_effective_permanente_remplit_titre_I condition
entrée i_avait_enfant_à_charge_avant_1er_janvier_2012 condition
champ d'application InterfaceAllocationsFamiliales:
définition allocations_familiales.date_courante égal à i_date_courante
définition allocations_familiales.enfants_à_charge égal à enfants_à_charge
définition allocations_familiales.ressources_ménage égal à i_ressources_ménage
définition allocations_familiales.résidence égal à i_résidence
définition i_montant_versé égal à allocations_familiales.montant_versé
règle
allocations_familiales.personne_charge_effective_permanente_est_parent
sous condition i_personne_charge_effective_permanente_est_parent
conséquence rempli
règle
allocations_familiales.personne_charge_effective_permanente_remplit_titre_I
sous condition i_personne_charge_effective_permanente_remplit_titre_I
conséquence rempli
règle
allocations_familiales.avait_enfant_à_charge_avant_1er_janvier_2012
sous condition i_avait_enfant_à_charge_avant_1er_janvier_2012
conséquence rempli
```
### Code de l'éducation
### Article L131-1|LEGIARTI000038901859
L'instruction est obligatoire pour chaque enfant dès l'âge de trois ans et
jusqu'à l'âge de seize ans.
La présente disposition ne fait pas obstacle à l'application des prescriptions
particulières imposant une scolarité plus longue.
```catala
champ d'application InterfaceAllocationsFamiliales:
définition enfants_à_charge égal à
(Enfant {
-- identifiant : enfant.d_identifiant
-- rémuneration_mensuelle : enfant.d_rémuneration_mensuelle
-- date_de_naissance : enfant.d_date_de_naissance
-- prise_en_charge : enfant.d_prise_en_charge
-- obligation_scolaire :
(si enfant.d_date_de_naissance + 3 an >= i_date_courante alors
Avant
sinon (si enfant.d_date_de_naissance + 16 an >= i_date_courante alors
Pendant
sinon Après))
-- a_déjà_ouvert_droit_aux_allocations_familiales:
enfant.d_a_déjà_ouvert_droit_aux_allocations_familiales
-- bénéficie_titre_personnel_aide_personnelle_logement:
enfant.d_bénéficie_titre_personnel_aide_personnelle_logement
}
pour enfant parmi i_enfants)
```
NOTA :
Conformément à l'article 63 de la loi n° 2019-791 du 26 juillet 2019, ces
dispositions entrent en vigueur à la rentrée scolaire 2019.

View File

@ -1,156 +0,0 @@
# Prologue
Avant de présenter les textes réglementaires qui régissent le calcul des
allocations familiales, il est nécessaire de définir les structures de données
informatiques qui modélisent la situation dont parlent ces textes législatifs.
## Types de données manipulées par le programme
```catala-metadata
déclaration énumération PriseEnCharge :
-- GardeAlternéePartageAllocations
-- GardeAlternéeAllocataireUnique
-- EffectiveEtPermanente
-- ServicesSociauxAllocationVerséeÀLaFamille
-- ServicesSociauxAllocationVerséeAuxServicesSociaux
déclaration énumération SituationObligationScolaire:
-- Avant
-- Pendant
-- Après
déclaration structure Enfant :
donnée identifiant contenu entier
donnée obligation_scolaire contenu SituationObligationScolaire
donnée rémuneration_mensuelle contenu argent
donnée date_de_naissance contenu date
donnée prise_en_charge contenu PriseEnCharge
donnée a_déjà_ouvert_droit_aux_allocations_familiales contenu booléen
donnée bénéficie_titre_personnel_aide_personnelle_logement contenu booléen
déclaration énumération PriseEnCompte:
-- Complète
-- Partagée
-- Zéro
déclaration énumération VersementAllocations:
-- Normal
-- AllocationVerséeAuxServicesSociaux
```
## Champs d'applications
### Prestations familiales
```catala-metadata
déclaration champ d'application PrestationsFamiliales:
résultat droit_ouvert condition dépend de enfant contenu Enfant
résultat conditions_hors_âge condition dépend de enfant contenu Enfant
interne plafond_l512_3_2 contenu argent
résultat âge_l512_3_2 contenu durée
résultat régime_outre_mer_l751_1 condition
entrée date_courante contenu date
entrée résidence contenu Collectivité
smic champ d'application Smic
champ d'application PrestationsFamiliales:
définition smic.résidence égal à résidence
définition smic.date_courante égal à date_courante
```
### Allocations familiales
```catala-metadata
déclaration champ d'application AllocationFamilialesAvril2008:
résultat âge_minimum_alinéa_1_l521_3 contenu durée
déclaration champ d'application EnfantLePlusÂgé:
entrée enfants contenu liste de Enfant
résultat le_plus_âgé contenu Enfant
déclaration champ d'application AllocationsFamiliales:
# Variables concernant le ménage
entrée personne_charge_effective_permanente_est_parent condition
entrée personne_charge_effective_permanente_remplit_titre_I condition
entrée ressources_ménage contenu argent
entrée résidence contenu Collectivité
# Date à laquelle le calcul est effectué
entrée date_courante contenu date
# Variables concernant les enfants du ménage
entrée enfants_à_charge contenu liste de Enfant
interne enfants_à_charge_droit_ouvert_prestation_familiale
contenu liste de Enfant
interne prise_en_compte contenu PriseEnCompte dépend de enfant contenu Enfant
résultat versement contenu VersementAllocations
dépend de enfant contenu Enfant
résultat montant_versé contenu argent
# Variables liées à la base des allications familiales
interne droit_ouvert_base condition
interne montant_initial_base contenu argent
interne montant_initial_base_premier_enfant contenu argent
interne montant_initial_base_deuxième_enfant contenu argent
interne montant_initial_base_troisième_enfant_et_plus contenu argent
interne rapport_enfants_total_moyen contenu décimal
interne nombre_moyen_enfants contenu décimal
interne nombre_total_enfants contenu décimal
interne montant_avec_garde_alternée_base contenu argent
interne montant_versé_base contenu argent
# Variables liées à Mayotte
entrée avait_enfant_à_charge_avant_1er_janvier_2012 condition
interne montant_initial_base_troisième_enfant_mayotte contenu argent
interne montant_initial_base_quatrième_enfant_et_plus_mayotte contenu argent
# Variables liées à l'allocation forfaitaire
interne droit_ouvert_forfaitaire condition
dépend de enfant contenu Enfant
interne montant_versé_forfaitaire_par_enfant contenu argent
interne montant_versé_forfaitaire contenu argent
# Variables liées aux majorations des allocations familiales
interne droit_ouvert_majoration condition
dépend de enfant contenu Enfant
interne montant_initial_métropole_majoration contenu argent
dépend de enfant contenu Enfant
interne montant_initial_majoration contenu argent
dépend de enfant contenu Enfant
interne montant_avec_garde_alternée_majoration contenu argent
dépend de enfant contenu Enfant
interne montant_versé_majoration contenu argent
# Variables liées au complément dégressif
interne droit_ouvert_complément condition
interne montant_base_complément_pour_base_et_majoration contenu argent
interne complément_dégressif contenu argent
dépend de allocation contenu argent
interne montant_versé_complément_pour_base_et_majoration contenu argent
interne montant_versé_complément_pour_forfaitaire contenu argent
# Sous-champs d'applications
prestations_familiales champ d'application PrestationsFamiliales
version_avril_2008 champ d'application AllocationFamilialesAvril2008
enfant_le_plus_âgé champ d'application EnfantLePlusÂgé
bmaf champ d'application BaseMensuelleAllocationsFamiliales
# Plafonds, âges limites et autres constantes
interne âge_minimum_alinéa_1_l521_3 contenu durée
dépend de enfant contenu Enfant
interne nombre_enfants_alinéa_2_l521_3 contenu entier
interne nombre_enfants_alinéa_2_l521_1 contenu entier
interne est_enfant_le_plus_âgé contenu booléen
dépend de enfant contenu Enfant
interne plafond_I_d521_3 contenu argent
interne plafond_II_d521_3 contenu argent
champ d'application AllocationsFamiliales:
définition prestations_familiales.date_courante égal à
date_courante
définition prestations_familiales.résidence égal à
résidence
définition bmaf.date_courante égal à date_courante
```

View File

@ -1,394 +0,0 @@
## Partie réglementaire - Décrets simples
#### Livre 5 : Prestations familiales et prestations assimilées
##### Titre 2 : Prestations générales d'entretien
###### Chapitre 1er : Allocations familiales
####### Article D521-1|LEGIARTI000030680318
I.-Pour l'application de l'article L. 521-1 , le montant des allocations
familiales et de la majoration pour âge prévue à l'article L. 521-3
est défini selon le barème suivant :
```catala
# Composantes des allocations familiales
champ d'application AllocationsFamiliales :
définition montant_initial_base égal à
montant_initial_base_deuxième_enfant +
montant_initial_base_troisième_enfant_et_plus
définition montant_initial_majoration de enfant égal à
montant_initial_métropole_majoration de enfant
```
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 ;
b) 41 % pour le troisième enfant à charge et chacun des suivants.
```catala
champ d'application AllocationsFamiliales sous condition
ressources_ménage <= plafond_I_d521_3:
étiquette base
définition montant_initial_base_deuxième_enfant égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 1
alors bmaf.montant * 32 %
sinon 0 €
définition montant_initial_base_troisième_enfant_et_plus égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 2
alors (bmaf.montant * 41 %) * (
décimal de
((nombre de enfants_à_charge_droit_ouvert_prestation_familiale) - 2)
) sinon 0 €
```
La majoration pour âge est fixée à 16 % de la base mensuelle de calcul des
prestations familiales ;
```catala
champ d'application AllocationsFamiliales sous condition
ressources_ménage <= plafond_I_d521_3:
définition montant_initial_métropole_majoration de enfant
sous condition
droit_ouvert_majoration de enfant
conséquence égal à
bmaf.montant * 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 ;
b) 20,5 % pour le troisième enfant à charge et chacun des suivants.
```catala
champ d'application AllocationsFamiliales sous condition
(ressources_ménage > plafond_I_d521_3) et
(ressources_ménage <= plafond_II_d521_3):
étiquette base
définition montant_initial_base_deuxième_enfant égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 1
alors bmaf.montant * 16 %
sinon 0 €
définition montant_initial_base_troisième_enfant_et_plus égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 2
alors (bmaf.montant * 20,5 %) * (
décimal de
((nombre de enfants_à_charge_droit_ouvert_prestation_familiale) - 2)
) sinon 0 €
```
La majoration pour âge est fixée à 8 % de la base mensuelle de calcul des
prestations familiales ;
```catala
champ d'application AllocationsFamiliales sous condition
(ressources_ménage > plafond_I_d521_3) et
(ressources_ménage <= plafond_II_d521_3):
définition montant_initial_métropole_majoration de enfant sous condition
droit_ouvert_majoration de enfant
conséquence égal à
bmaf.montant * 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 ;
b) 10,25 % pour le troisième enfant à charge et chacun des suivants.
```catala
champ d'application AllocationsFamiliales sous condition
ressources_ménage > plafond_II_d521_3:
étiquette base
définition montant_initial_base_deuxième_enfant égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 1
alors bmaf.montant * 8 %
sinon 0 €
définition montant_initial_base_troisième_enfant_et_plus égal à
si nombre de enfants_à_charge_droit_ouvert_prestation_familiale > 2
alors (bmaf.montant * 10,25 %) * (
décimal de
((nombre de enfants_à_charge_droit_ouvert_prestation_familiale) - 2)
) sinon 0 €
```
La majoration pour âge est fixée à 4 % de la base mensuelle de calcul des
prestations familiales.
```catala
champ d'application AllocationsFamiliales sous condition
ressources_ménage > plafond_II_d521_3:
définition montant_initial_métropole_majoration de enfant sous condition
droit_ouvert_majoration de enfant
conséquence égal à
bmaf.montant * 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.
Ce complément dégressif est égal, pour chaque mois, au douzième de la
différence entre, d'une part, ce plafond de ressources majoré de la somme
définie à l'alinéa précédent et, d'autre part, le montant des ressources.
```catala
champ d'application AllocationsFamiliales :
# Attention : cette formule ne marche que si la diminution des
# allocations se fait d'un facteur 1/2 à chaque passage de plafond de
# ressources.
exception
définition complément_dégressif de allocation
sous condition
(ressources_ménage > plafond_I_d521_3) et
(ressources_ménage <= plafond_I_d521_3 + allocation * 12,0 )
conséquence égal à
(plafond_I_d521_3 + allocation * 12,0 - ressources_ménage) *
(1,0 / 12,0)
exception
définition complément_dégressif de allocation
sous condition
(ressources_ménage > plafond_II_d521_3) et
(ressources_ménage <= plafond_II_d521_3 + allocation * 12,0)
conséquence égal à
(plafond_II_d521_3 + allocation * 12,0 - ressources_ménage) *
(1,0 / 12,0)
# Dans les autres cas, le dépassement est nul
définition complément_dégressif de allocation égal à 0 €
définition montant_versé_complément_pour_base_et_majoration égal à
si droit_ouvert_complément alors
(complément_dégressif de
montant_base_complément_pour_base_et_majoration)
sinon 0 €
définition montant_base_complément_pour_base_et_majoration égal à
montant_versé_base + montant_versé_majoration
```
####### Article D521-2|LEGIARTI000030680324
```catala
# L'allocation forfaitaire totale est la somme de toutes les allocations
# forfaitaires distribuées à chaque enfant du ménage
champ d'application AllocationsFamiliales :
définition montant_versé_forfaitaire égal à
montant_versé_forfaitaire_par_enfant *
décimal de
nombre de (enfant parmi enfants_à_charge
tel que droit_ouvert_forfaitaire de enfant)
```
I.-Le montant mensuel de l'allocation forfaitaire prévue au deuxième alinéa de
l'article L. 521-1 est défini selon le barème suivant :
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, le montant
mensuel de l'allocation forfaitaire est fixé à 20,234 % de la base mensuelle
de calcul des allocations familiales par enfant ;
```catala
# TODO Liane: la syntaxe de la phrase est très ambiguë, on a l'impression que
# c'est la BMAF qui est "par enfant" et pas le montant de l'allocation
# forfaitaire. Erreur de rédaction ? Problème juridique ?
champ d'application AllocationsFamiliales :
définition montant_versé_forfaitaire_par_enfant sous condition
ressources_ménage <= plafond_I_d521_3
conséquence égal à
(bmaf.montant * 20,234 %)
```
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, le montant mensuel de l'allocation
forfaitaire est fixé à 10,117 % de la base mensuelle de calcul des allocations
familiales par enfant ;
```catala
champ d'application AllocationsFamiliales :
définition montant_versé_forfaitaire_par_enfant sous condition
(ressources_ménage > plafond_I_d521_3) et
(ressources_ménage <= plafond_II_d521_3)
conséquence égal à
(bmaf.montant * 10,117 %)
```
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, le montant mensuel
de l'allocation forfaitaire est fixé à 5,059 % de la base mensuelle de calcul
des allocations familiales par enfant.
```catala
champ d'application AllocationsFamiliales :
définition montant_versé_forfaitaire_par_enfant sous condition
ressources_ménage > plafond_II_d521_3
conséquence égal à
(bmaf.montant * 5,059 %)
```
II.-En application du sixième alinéa de l'article L. 521-1, le montant mensuel
de l'allocation forfaitaire 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 de l'allocation forfaitaire auquel l'enfant ouvre droit.
Ce complément dégressif est égal, pour chaque mois, au douzième de la différence
entre, d'une part, ce plafond de ressources majoré de la somme définie à
l'alinéa précédent et, d'autre part, le montant des ressources.
```catala
champ d'application AllocationsFamiliales :
exception
définition montant_versé_complément_pour_forfaitaire
sous condition
(ressources_ménage > plafond_I_d521_3) et
(ressources_ménage <= plafond_I_d521_3 +
montant_versé_forfaitaire * 12,0 )
conséquence égal à
(plafond_I_d521_3 + montant_versé_forfaitaire * 12,0
- ressources_ménage) * (1,0 / 12,0)
exception
définition montant_versé_complément_pour_forfaitaire
sous condition
(ressources_ménage > plafond_II_d521_3) et
(ressources_ménage <= plafond_II_d521_3 +
montant_versé_forfaitaire * 12,0)
conséquence égal à
(plafond_II_d521_3 + montant_versé_forfaitaire * 12,0
- ressources_ménage) * (1,0 / 12,0)
# Dans les autres cas, le dépassement est nul
définition montant_versé_complément_pour_forfaitaire égal à 0 €
```
III.-Le nombre minimum d'enfants à charge mentionné au deuxième alinéa de
l'article L. 521-1 est fixé à trois.
```catala
champ d'application AllocationsFamiliales :
définition nombre_enfants_alinéa_2_l521_1 égal à 3
```
####### Article D521-3|LEGIARTI000044809227
I.-Le plafond prévu au 1° du I des articles D. 521-1 et D. 521-2 est fixé à
55 950 euros. Il est majoré de 5 595 euros par enfant à charge.
```catala
champ d'application AllocationsFamiliales :
définition plafond_I_d521_3 égal à 55 950 € +
5 595 € * (décimal de
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale))
```
II.-Le plafond prévu au 2° du I des articles D. 521-1 et D. 521-2 est fixé à
78 300 euros. Il est majoré de 5 595 euros par enfant à charge.
```catala
champ d'application AllocationsFamiliales :
définition plafond_II_d521_3 égal à 78 300 € +
5 595 € * (décimal de
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale))
```
III.-Les montants des plafonds et de leur majoration respective fixés au présent
article sont revalorisés au 1er janvier de chaque année, conformément à
l'évolution en moyenne annuelle des prix à la consommation hors tabac de
l'année civile de référence.
```catala
# Nota : ces montants sont en réalités remis à jour chaque année par des
# décrets, voir decrets_divers.catala_fr
```
#### Livre 7 : Régimes divers - Dispositions diverses
##### Titre 5 : Départements d'outre-mer
###### Chapitre 5 : Prestations familiales et prestations assimilées
####### Article D755-5|LEGIARTI000006738575
I.-Les taux servant au calcul des allocations familiales et de la majoration
prévue à l'article L. 755-11 sont identiques à ceux mentionnés à l'article
D. 521-1 .
```catala
# Pas de changement à déclarer
```
II.-En application de l'article L. 755-11, 2e alinéa, le taux servant au
calcul des allocations familiales servies pour un seul enfant à charge est
fixé à 5,88 p. 100 de la base mensuelle prévue à l'article L. 755-3 .
```catala
# Composantes des allocations familiales
champ d'application AllocationsFamiliales :
exception
définition montant_initial_base sous condition
prestations_familiales.régime_outre_mer_l751_1 et
nombre de enfants_à_charge_droit_ouvert_prestation_familiale = 1
conséquence égal à
montant_initial_base_premier_enfant
# Valeur par défaut
étiquette base définition montant_initial_base_premier_enfant égal à 0€
exception base définition montant_initial_base_premier_enfant sous condition
prestations_familiales.régime_outre_mer_l751_1 et
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale = 1)
conséquence égal à
bmaf.montant * 5,88 %
```
La majoration des allocations familiales pour un seul enfant à charge est
fixée à 3,69 p. 100 de la base mensuelle prévue à l'article L. 755-3 à
partir de onze ans et à 5,67 p. 100 à partir de seize ans.
```catala
champ d'application AllocationsFamiliales :
exception définition montant_initial_majoration de enfant
sous condition
(droit_ouvert_majoration de enfant) et
prestations_familiales.régime_outre_mer_l751_1 et
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale = 1) et
(enfant.date_de_naissance + 11 an <= date_courante et
enfant.date_de_naissance + 16 an > date_courante)
conséquence égal à
bmaf.montant * 3,69 %
exception définition montant_initial_majoration de enfant
sous condition
(droit_ouvert_majoration de enfant) et
prestations_familiales.régime_outre_mer_l751_1 et
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale = 1) et
(enfant.date_de_naissance + 16 an <= date_courante)
conséquence égal à
bmaf.montant * 5,67 %
```

View File

@ -1,465 +0,0 @@
# Code de la sécurité sociale
## Partie législative
### Livre 5 : Prestations familiales et prestations assimilées
#### Titre 1 : Champ d'application - Généralités
##### Chapitre 1er : Liste des prestations
###### Article L511-1 | LEGIARTI000041979747
Les prestations familiales comprennent :
1°) la prestation d'accueil du jeune enfant ;
2°) les allocations familiales ;
3°) le complément familial ;
4°) L'allocation de logement régie par les dispositions du livre VIII du code de la construction et de l'habitation ;
5°) l'allocation d'éducation de l'enfant handicapé ;
6°) l'allocation de soutien familial ;
7°) l'allocation de rentrée scolaire ;
8°) L'allocation forfaitaire versée en cas de décès d'un enfant ;
9°) l'allocation journalière de présence parentale.
NOTA :
Conformément au IV de larticle 5 de la loi n° 2020-692 du 8 juin 2020,
ces dispositions entrent en vigueur à une date fixée par décret, et au plus
tard à compter du 1er janvier 2022, au titre des enfants dont le décès
intervient à compter de cette date. Se reporter aux dispositions du V du même
article en ce qui concerne le versement d'une l'allocation forfaitaire
transitoire.
##### Chapitre 2 : Champ d'application
###### Article L512-3|LEGIARTI000041979743
Sous réserve des règles particulières à chaque prestation,
ouvre droit aux prestations familiales :
1°) tout enfant jusqu'à la fin de l'obligation scolaire ;
```catala
champ d'application PrestationsFamiliales :
étiquette cas_base règle droit_ouvert de enfant sous condition
enfant.obligation_scolaire sous forme Avant ou
enfant.obligation_scolaire sous forme Pendant
conséquence rempli
```
2°) après la fin de l'obligation scolaire, et jusqu'à un âge limite,
tout enfant dont la rémunération éventuelle n'excède pas un plafond.
```catala
champ d'application PrestationsFamiliales :
étiquette cas_base règle droit_ouvert de enfant sous condition
enfant.obligation_scolaire sous forme Après et
(enfant.rémuneration_mensuelle <= plafond_l512_3_2) et
(enfant.date_de_naissance + âge_l512_3_2 > date_courante)
conséquence rempli
# On définit les conditions hors âge d'abord car elles
# sont référencées plus tard dans l'article L521-1
règle conditions_hors_âge de enfant sous condition
(enfant.obligation_scolaire sous forme Avant ou
enfant.obligation_scolaire sous forme Pendant ou
enfant.obligation_scolaire sous forme Après) et
(enfant.rémuneration_mensuelle <= plafond_l512_3_2)
conséquence rempli
champ d'application AllocationsFamiliales:
définition enfants_à_charge_droit_ouvert_prestation_familiale égal à
enfant parmi enfants_à_charge
tel que prestations_familiales.droit_ouvert de enfant
```
Toutefois, pour l'attribution du complément familial et de l'allocation
de logement mentionnés aux 3° et 4° de l'article L. 511-1 , l'âge limite
peut être différent de celui mentionné au 2° du présent article.
```catala
# Sera géré avec une exception dans Catala. Le texte est équivalent
# à une méta-propriété du code à vérifier : i.e. pas d'exceptions pour
# cet âge autre part que pour Complément Familial ou AllocationLogement.
```
Pour l'attribution de l'allocation forfaitaire versée en cas de décès d'un
enfant prévue à l'article L. 545-1, l'âge limite retenu peut être différent de
celui fixé en application du 2° du présent article et la condition relative à
la rémunération de l'enfant n'est pas exigée.
NOTA :
Conformément au IV de larticle 5 de la loi n° 2020-692 du 8 juin 2020, ces
dispositions entrent en vigueur à une date fixée par décret, et au plus tard à
compter du 1er janvier 2022, au titre des enfants dont le décès intervient à
compter de cette date. Se reporter aux dispositions du V du même article en ce
qui concerne le versement d'une l'allocation forfaitaire transitoire.
#### Titre 2 : Prestations générales d'entretien
##### Chapitre 1er : Allocations familiales
###### Article L521-1|LEGIARTI000029963006
Les allocations familiales sont dues à partir du deuxième enfant à charge.
```catala
champ d'application AllocationsFamiliales :
règle droit_ouvert_base sous condition
nombre de enfants_à_charge_droit_ouvert_prestation_familiale >= 2
conséquence rempli
```
Une allocation forfaitaire par enfant d'un montant fixé par décret est versée
pendant un an à la personne ou au ménage qui assume la charge d'un nombre
minimum d'enfants également fixé par décret lorsque l'un ou plusieurs des
enfants qui ouvraient droit aux allocations familiales atteignent l'âge
limite mentionné au 2° de l'article L. 512-3 . Cette allocation est versée
à la condition que le ou les enfants répondent aux conditions autres que
celles de l'âge pour l'ouverture du droit aux allocations familiales.
```catala
champ d'application AllocationsFamiliales :
assertion fixé montant_versé par décret
règle droit_ouvert_forfaitaire de enfant sous condition
# nombre_enfants_alinéa_2_l521_3 sera défini dans l'article R521-3
(nombre de enfants_à_charge >= nombre_enfants_alinéa_2_l521_1) et
# Puisqu'un enfant ne garde un âge donné que pour une période d'un an,
# cette condition assure que l'allocation ne peut être distribuée que pour
# un an.
((enfant.date_de_naissance + prestations_familiales.âge_l512_3_2) -
date_courante < 365 jour) et
(enfant.a_déjà_ouvert_droit_aux_allocations_familiales) et
(prestations_familiales.conditions_hors_âge de enfant)
conséquence rempli
```
Le montant des allocations mentionnées aux deux premiers alinéas du présent
article, ainsi que celui des majorations mentionnées à l'article L. 521-3
varient en fonction des ressources du ménage ou de la personne qui a la charge
des enfants, selon un barème défini par décret.
```catala
champ d'application AllocationsFamiliales :
assertion fixé montant_versé_base par décret
assertion varie montant_versé_base avec ressources_ménage
assertion fixé montant_versé_majorations par décret
assertion varie montant_versé_majorations avec ressources_ménage
```
Le montant des allocations familiales varie en fonction du nombre d'enfants
à charge.
```catala
champ d'application AllocationsFamiliales :
assertion varie montant_versé_base.montant_versé avec
nombre de enfants_à_charge_droit_ouvert_prestation_familiale
```
Les niveaux des plafonds de ressources, qui varient en fonction du nombre
d'enfants à charge, sont révisés conformément à l'évolution annuelle de
l'indice des prix à la consommation, hors tabac.
```catala
# Pour formaliser l'évolution des prix, il faudrait recopier ici
# tous les décrets d'application qui fixent la valeur des plafonds
# de ressources. Si cela reste possible à faire pour notre langage,
# nous avons choisi de ne pas inclure tout ce code dans ce document.
```
Un complément dégressif est versé lorsque les ressources du bénéficiaire
dépassent l'un des plafonds, dans la limite de montants définis par décret.
Les modalités de calcul de ces montants et celles du complément dégressif
sont définies par décret.
```catala
# Ditto, le volume du code à inclure pour formaliser cette assertion
# est assez important et nous avons choisi de ne pas l'inclure dans ce
# document.
champ d'application AllocationsFamiliales :
assertion fixé montant_versé_complément par décret
```
###### Article L521-2|LEGIARTI000039099826
Les allocations sont versées à la personne qui assume, dans quelques conditions
que ce soit, la charge effective et permanente de l'enfant.
```catala
champ d'application AllocationsFamiliales :
définition prise_en_compte de enfant sous condition
enfant.prise_en_charge sous forme EffectiveEtPermanente
conséquence égal à PriseEnCompte.Complète
définition versement de enfant sous condition
enfant.prise_en_charge sous forme EffectiveEtPermanente
conséquence égal à VersementAllocations.Normal
```
En cas de résidence alternée de l'enfant au domicile de chacun des parents telle
que prévue à l'article 373-2-9 du code civil, mise en oeuvre de manière
effective, les parents désignent l'allocataire. Cependant, la charge de l'enfant
pour le calcul des allocations familiales est partagée par moitié entre les deux
parents soit sur demande conjointe des parents, soit si les parents sont en
désaccord sur la désignation de l'allocataire. Un décret en Conseil d'Etat fixe
les conditions d'application du présent alinéa.
```catala
champ d'application AllocationsFamiliales :
# Premier cas : garde alternée, parents désignent un unique allocataire
définition prise_en_compte de enfant sous condition
enfant.prise_en_charge sous forme GardeAlternéeAllocataireUnique
conséquence égal à PriseEnCompte.Complète
définition versement de enfant sous condition
enfant.prise_en_charge sous forme GardeAlternéeAllocataireUnique
conséquence égal à VersementAllocations.Normal
# Deuxième cas : garde alternée, parents partagent la charge pour
# l'allocation
définition prise_en_compte de enfant sous condition
enfant.prise_en_charge sous forme GardeAlternéePartageAllocations
conséquence égal à PriseEnCompte.Partagée
définition versement de enfant sous condition
enfant.prise_en_charge sous forme GardeAlternéePartageAllocations
conséquence égal à VersementAllocations.Normal
```
Lorsque la personne qui assume la charge effective et permanente de l'enfant ne
remplit pas les conditions prévues au titre I du présent livre pour l'ouverture
du droit aux allocations familiales, ce droit s'ouvre du chef du père ou,
à défaut, du chef de la mère.
```catala
champ d'application AllocationsFamiliales :
assertion
personne_charge_effective_permanente_est_parent ou
(
(non personne_charge_effective_permanente_est_parent) et
personne_charge_effective_permanente_remplit_titre_I
)
```
Lorsqu'un enfant est confié au service d'aide sociale à l'enfance, les
allocations familiales continuent d'être évaluées en tenant compte à la fois
des enfants présents au foyer et du ou des enfants confiés au service de
l'aide sociale à l'enfance. La part des allocations familiales dues à la
famille pour cet enfant est versée à ce service. Toutefois, le juge peut
décider, d'office ou sur saisine du président du conseil général, à la suite
d'une mesure prise en application des articles 375-3 et 375-5 du code civil ou
à l'article L. 323-1 du code de la justice pénale des mineurs, de maintenir le
versement des allocations à la famille, lorsque celle-ci participe à la prise
en charge morale ou matérielle de l'enfant ou en vue de faciliter le retour de
l'enfant dans son foyer.
```catala
champ d'application AllocationsFamiliales :
définition prise_en_compte de enfant sous condition
enfant.prise_en_charge sous forme
ServicesSociauxAllocationVerséeAuxServicesSociaux
conséquence égal à PriseEnCompte.Zéro
définition versement de enfant sous condition
enfant.prise_en_charge sous forme
ServicesSociauxAllocationVerséeAuxServicesSociaux
conséquence égal à VersementAllocations.AllocationVerséeAuxServicesSociaux
définition prise_en_compte de enfant sous condition
enfant.prise_en_charge sous forme
ServicesSociauxAllocationVerséeÀLaFamille
conséquence égal à PriseEnCompte.Complète
définition versement de enfant sous condition
enfant.prise_en_charge sous forme
ServicesSociauxAllocationVerséeÀLaFamille
conséquence égal à VersementAllocations.Normal
```
Un décret en Conseil d'Etat fixe les conditions d'application du présent
article, notamment dans les cas énumérés ci-dessous :
a) retrait total de l'autorité parentale des parents ou de l'un d'eux ;
b) indignité des parents ou de l'un d'eux ;
c) divorce, séparation de corps ou de fait des parents ;
d) enfants confiés à un service public, à une institution privée, à un particulier.
```catala
# Ce programme ne cherche pas à formaliser les détails pour lesquels un enfant
# est confié à un service social.
```
NOTA :
Se reporter aux conditions d'application prévues à l'article 10 de
l'ordonnance n° 2019-950 du 11 septembre 2019. Conformément à l'article 25 de
la loi n°2020-734, l'ordonnance n°2019-950 entre en vigueur le 31 mars 2021.
Cette date a été reportée au 30 septembre 2021 par l'article 2 de la loi n°
2021-218 du 26 février 2021.
###### Article L521-3|LEGIARTI000006743289
Chacun des enfants à charge, à l'exception du plus âgé, ouvre droit à partir
d'un âge minimum à une majoration des allocations familiales.
```catala
champ d'application AllocationsFamiliales :
règle droit_ouvert_majoration de enfant
sous condition
(non (est_enfant_le_plus_âgé de enfant)) et
(enfant.date_de_naissance + âge_minimum_alinéa_1_l521_3 de enfant <=
date_courante)
conséquence rempli
```
Toutefois, les personnes ayant un nombre déterminé d'enfants à charge
bénéficient de ladite majoration pour chaque enfant à charge à partir
de l'âge mentionné au premier alinéa.
```catala
champ d'application AllocationsFamiliales :
exception
règle droit_ouvert_majoration de enfant
sous condition
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale >=
nombre_enfants_alinéa_2_l521_3) et
(enfant.date_de_naissance + âge_minimum_alinéa_1_l521_3 de enfant <=
date_courante)
conséquence rempli
```
#### Titre 5 : Dispositions communes
##### Chapitre 1er : Etablissement du salaire de base
###### Article L551-1|LEGIARTI000031688371
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 .
```catala
# Idem que L521-1, on ne formalise pas ici l'évolution de la BMPA
champ d'application PrestationsFamiliales :
assertion fixé prestations_familiales.base_mensuelle par décret
```
### Livre 7 : Régimes divers - Dispositions diverses
#### Titre 5 : Dispositions particulières à la Guadeloupe, à la Guyane, à la Martinique, à La Réunion, à Saint-Barthélemy et à Saint-Martin
##### Chapitre 1er : Généralités
###### Article L751-1|LEGIARTI000031323778
Les dispositions du présent titre s'appliquent en Guadeloupe, en Guyane,
en Martinique, à La Réunion, à Saint-Barthélemy et à Saint-Martin à
l'ensemble des bénéficiaires de la législation générale de sécurité
sociale, y compris les membres des professions agricoles.
```catala
# Angle mort: ici nous n'avons pas formalisé la partie sur la législation
# générale de sécurité sociale et les membres des professions agricoles.
champ d'application PrestationsFamiliales :
règle régime_outre_mer_l751_1 sous condition
(résidence = Guadeloupe) ou
(résidence = Guyane) ou
(résidence = Martinique) ou
(résidence = LaRéunion) ou
(résidence = SaintBarthélemy) ou
(résidence = SaintMartin)
conséquence rempli
```
##### Chapitre 5 : Prestations familiales et prestations assimilées
###### Article L755-3|LEGIARTI000041979722
Les dispositions des articles L. 512-1 à L. 512-4 , L. 513-1 , L. 521-2 , L.
552-1 , L. 552-7 , L. 553-1 , L. 553-2 , L. 553-4 , L. 582-1 , L. 582-2 , L.
583-3 et L. 583-5 sont applicables aux collectivités mentionnées à l'article
L. 751-1 .
La base de calcul des prestations familiales est la même que celle qui est
fixée en application de l'article L. 551-1 .
```catala
# Aucun changement dans le code, puisque les articles restent applicables
```
NOTA :
Conformément au IV de larticle 4 de la loi n° 2020-692 du 8 juin 2020, ces
dispositions entrent en vigueur à une date fixée par décret, et au plus tard
le 1er janvier 2022, pour les décès intervenant à compter de cette date.
###### Article L755-11|LEGIARTI000031323803
Les conditions d'attribution des allocations familiales et de leurs majorations
fixées par les articles L. 521-1 et L. 521-3 sont applicables dans les
collectivités mentionnées à l'article L. 751-1 .
```catala
# Aucun changement dans le code, puisque les articles restent applicables
```
Toutefois, les dispositions de l'article L. 755-12 restent en vigueur aussi
longtemps que le présent chapitre V est applicable.
###### Article L755-12|LEGIARTI000029962999
Les allocations familiales sont dues, pour tout enfant, à la personne qui a
effectivement la charge de celui-ci.
```catala
# TODO Liane: Angle mort, ici c'est marqué "effectivement la charge" mais dans
# l'article de L521-2 il faut charge effective ET permanente. Pourquoi
# cette différence ? Quelles conséquences pratiques ?
# Apparemment en 1987 il y avait encore des exceptions pour certains agents
# publics d'outre-mer
champ d'application AllocationsFamiliales:
exception
règle droit_ouvert_base sous condition
prestations_familiales.régime_outre_mer_l751_1 et
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale >= 1)
conséquence rempli
```
Toutefois, les quatre derniers alinéas de l'article L. 521-1 ne sont pas
applicables lorsque le ménage ou la personne a un seul enfant à charge.
```catala
# Ceci concerne l'ouverture du droit à l'allocation forfaitaire
# et au complément dégressif.
champ d'application AllocationsFamiliales :
exception
règle droit_ouvert_forfaitaire de enfant sous condition
prestations_familiales.régime_outre_mer_l751_1 et
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale = 1)
conséquence non rempli
exception
règle droit_ouvert_complément sous condition
prestations_familiales.régime_outre_mer_l751_1 et
(nombre de enfants_à_charge_droit_ouvert_prestation_familiale = 1)
conséquence non rempli
```

View File

@ -1,218 +0,0 @@
## Partie réglementaire - Décrets en Conseil d'Etat
### Livre 5 : Prestations familiales et prestations assimilées
#### Titre 1 : Champ d'application - Généralités
##### Chapitre 2 : Champ d'application.
###### Article R512-2|LEGIARTI000006750602
Les enfants ouvrent droit aux prestations familiales jusqu'à l'âge de vingt
ans sous réserve que leur rémunération n'excède pas le plafond fixé au deuxième
alinéa du présent article.
```catala
# Attention: ici la condition de ressources au dessous du plafond est une
# répétition par rapport au texte de L512-3. On ne remet donc pas le code ici
# correspondant à cette limitation.
champ d'application PrestationsFamiliales :
définition âge_l512_3_2 égal à 20 an
```
Le plafond de rémunération mentionné au 2° de l'article L. 512-3 est égal, pour
un mois, à 55 % du salaire minimum interprofessionnel de croissance défini aux
articles L. 141-1 à L. 141-9 du code du travail, multiplié par 169.
```catala
champ d'application PrestationsFamiliales :
définition plafond_l512_3_2 égal à
(smic.brut_horaire * 55 %) * 169,0
```
Pour ceux des enfants qui bénéficient d'avantages en nature, l'évaluation de ces
avantages devra être faite suivant les barèmes fixés pour l'application de la
législation sur les assurances sociales.
```catala
# Le programme Catala ne tient pas en compte des avantages en nature.
# TODO: Liane, faire de la recherche juridique sur le sujet.
```
#### Titre 2 : Prestations générales d'entretien
##### Chapitre 1er : Allocations familiales
###### Article R521-1|LEGIARTI000018735853
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.
```catala
champ d'application AllocationsFamiliales :
définition âge_minimum_alinéa_1_l521_3 de enfant égal à 14 an
```
Le nombre minimum d'enfants à charge, mentionné au deuxième alinéa de l'article
L. 521-3 ouvrant droit à ladite majoration pour chaque enfant est fixé à trois.
```catala
champ d'application AllocationsFamiliales :
définition nombre_enfants_alinéa_2_l521_3 égal à 3
```
NOTA : Décret n° 2008-409 du 28 avril 2008 JORF du 29 avril 2008 art. 2 : Les
modifications induites par le décret n° 2008-409 s'appliquent aux enfants dont
le onzième anniversaire est postérieur au 30 avril 2008.
```catala
# Notons ici un champ d'application différent, correspondant à une ancienne
# version du corpus législatif dont un morceau s'applique encore. Nous avons
# choisi de montrer ce vieux champ d'application ici plutôt qu'à côté du texte
# du décret de 2008 pour des raisons de place seulement.
champ d'application AllocationFamilialesAvril2008:
# Âge limite avant décret n° 2008-409 du 28 avril 2008
définition âge_minimum_alinéa_1_l521_3 égal à 16 an
champ d'application AllocationsFamiliales :
exception
définition âge_minimum_alinéa_1_l521_3 de enfant
sous condition (enfant.date_de_naissance + 11 an <= |2008-04-30|)
conséquence égal à
version_avril_2008.âge_minimum_alinéa_1_l521_3
```
###### Article R521-2|LEGIARTI000006750608
Dans les situations visées au deuxième alinéa de l'article L. 521-2 ,
l'allocataire est celui des deux parents qu'ils désignent d'un commun accord.
A défaut d'accord sur la désignation d'un allocataire unique, chacun des deux
parents peut se voir reconnaître la qualité d'allocataire :
1° Lorsque les deux parents en ont fait la demande conjointe ;
2° Lorsque les deux parents n'ont ni désigné un allocataire unique, ni fait
une demande conjointe de partage.
```catala
# Le fait que l'allocataire dans le cas d'un commun accord soit celui des
# deux parents désigné par l'accord est déjà modélisé dans L521-2.
```
Lorsque les parents ont désigné un allocataire unique ou fait une demande
conjointe de partage, ils ne peuvent remettre en cause les modalités ainsi
choisies qu'au bout d'un an, sauf modification des modalités de résidence du
ou des enfants.
```catala
# On ne modélise pas le délai minimal entre changement de situation dans
# ce programme.
```
###### Article R521-3 | LEGIARTI000006750610
Sous réserve de l'article R. 521-4, dans les situations visées aux 1° et 2° de
l'article R. 521-2 , la prestation due à chacun des parents est égale au
montant des allocations familiales dues pour le total des enfants à charge,
multiplié par un coefficient résultant du rapport entre le nombre moyen
d'enfants et le nombre total d'enfants.
```catala
champ d'application AllocationsFamiliales :
définition montant_avec_garde_alternée_base égal à
montant_initial_base * rapport_enfants_total_moyen
définition rapport_enfants_total_moyen égal à
si nombre_total_enfants = 0,0 alors 0,0 sinon
(nombre_moyen_enfants / nombre_total_enfants)
```
Le nombre moyen d'enfants, pour chaque foyer, est obtenu en faisant la somme
du nombre d'enfants à charge dans les conditions suivantes :
1° Chaque enfant en résidence alternée compte pour 0,5 ;
2° Les autres enfants à charge comptent pour 1.
```catala
champ d'application AllocationsFamiliales :
définition nombre_moyen_enfants égal à
somme décimal de
((selon (prise_en_compte de enfant) sous forme
-- Complète : 1,0
-- Partagée : 0,5
# Pas directement dans cet article de loi, mais concerne le
# cas où l'enfant est pris en charge par les services sociaux et
# la part de l'allocation va également au service social
-- Zéro: 0,0)
pour enfant parmi enfants_à_charge_droit_ouvert_prestation_familiale)
```
Le nombre total d'enfants, pour chaque foyer, est obtenu en faisant la somme du
ou des enfants en résidence alternée et, le cas échéant, du ou des autres
enfants à charge.
```catala
champ d'application AllocationsFamiliales :
définition nombre_total_enfants égal à
décimal de (nombre de
enfants_à_charge_droit_ouvert_prestation_familiale)
```
###### Article R521-4|LEGIARTI000006750613
Pour l'ouverture du droit à la majoration prévue à l'article L. 521-3 , le
nombre d'enfants à charge est évalué dans les conditions prévues au premier
alinéa de l'article R. 521-3.
```catala
# Le renvoi ci-dessus ne fait qu'annoncer qu'on va appliquer un système
# de décote pour garde alternée au système de majorations.
# Ce renvoi signifie que notre liste
# enfants_à_charge_droit_ouvert_prestation_familiale
# qui était utilisée pour la prestation de base est la même que la liste
# d'enfant utilisée pour le calcul des majorations
```
Lorsque le ou les enfants ouvrant droit à ladite majoration sont en résidence
alternée, le montant servi au titre de cette majoration est réduit de moitié.
```catala
champ d'application AllocationsFamiliales :
définition
montant_avec_garde_alternée_majoration de enfant
égal à montant_initial_majoration de enfant * (
selon (prise_en_compte de enfant) sous forme
-- Complète : 100%
-- Partagée : 50%
# Pas directement dans cet arricle de loi, mais concerne le
# cas où l'enfant est pris en charge par les services sociaux et
# la part de l'allocation va également au service social
-- Zéro: 0%
)
```
### Livre 7 : Régimes divers - Dispositions diverses
#### Titre 5 : Départements d'outre-mer
##### Chapitre 5 : Prestations familiales et prestations assimilées
###### Article R755-0-2|LEGIARTI000006752633
Le plafond de rémunération des enfants à charge mentionnés à l'article
L. 512-3 est égal, pour un mois, à 55 % du salaire minimum de croissance en
vigueur dans chacun des départements mentionnés à l'article L. 751-1 ,
multiplié par 169.
```catala
champ d'application PrestationsFamiliales :
exception
définition plafond_l512_3_2
sous condition régime_outre_mer_l751_1
conséquence égal à
(smic.brut_horaire * 55%) * 169,0
```

View File

@ -1,7 +0,0 @@
(rule
(targets tests_allocations_familiales.ml)
(deps
(source_tree .)
../allocations_familiales.ml)
(action
(run catala OCaml -t tests_allocations_familiales.catala_fr)))

View File

@ -1,15 +0,0 @@
> Inclusion: ../allocations_familiales.catala_fr
# Ce fichier est uniquement là pour vérifier que les invariants structurels sont bien garanties par les differences phases de compilation.
```catala-test-inline
$ catala Typecheck --check-invariants
[RESULT] Invariant typing_defaults checked. result: [3195/3195]
[RESULT] Invariant match_inversion checked. result: [18/18]
[RESULT] Invariant app_inversion checked. result: [26/26]
[RESULT] Invariant no_return_a_function checked. result: [96/96]
[RESULT] Invariant no_partial_evaluation checked. result: [26/26]
[RESULT] Invariant default_no_arrow checked. result: [284/284]
[RESULT] Typechecking successful!
```

View File

@ -1,480 +0,0 @@
> Inclusion: ../allocations_familiales.catala_fr
# Tests
```catala
déclaration champ d'application Données:
résultat enfant1 contenu EnfantEntrée
résultat enfant2 contenu EnfantEntrée
résultat enfant3 contenu EnfantEntrée
résultat enfant4 contenu EnfantEntrée
résultat enfant5 contenu EnfantEntrée
champ d'application Données:
définition enfant1 égal à EnfantEntrée {
-- d_identifiant: 1
-- d_date_de_naissance: |2007-01-01|
-- d_rémuneration_mensuelle: 0€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
}
définition enfant2 égal à EnfantEntrée {
-- d_identifiant: 2
-- d_date_de_naissance: |2009-01-01|
-- d_rémuneration_mensuelle: 0€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
}
définition enfant3 égal à EnfantEntrée {
-- d_identifiant: 3
-- d_date_de_naissance: |2003-01-01|
-- d_rémuneration_mensuelle: 400€
-- d_prise_en_charge: GardeAlternéePartageAllocations
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
}
définition enfant4 égal à EnfantEntrée {
-- d_identifiant: 4
-- d_date_de_naissance: |2001-01-01|
-- d_rémuneration_mensuelle: 1100€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
}
définition enfant5 égal à EnfantEntrée {
-- d_identifiant: 5
-- d_date_de_naissance: |2000-01-01|
-- d_rémuneration_mensuelle: 0€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
}
déclaration champ d'application Test1:
f champ d'application InterfaceAllocationsFamiliales
données champ d'application Données
champ d'application Test1:
définition f.i_enfants égal à
[données.enfant1;données.enfant2;données.enfant3;données.enfant4]
définition f.i_ressources_ménage égal à 30 000 €
définition f.i_date_courante égal à |2020-05-01|
définition f.i_résidence égal à Métropole
règle f.i_personne_charge_effective_permanente_est_parent rempli
assertion f.i_montant_versé = 351,54€
déclaration champ d'application Test2:
f champ d'application InterfaceAllocationsFamiliales
données champ d'application Données
champ d'application Test2:
définition f.i_enfants égal à
[données.enfant1;données.enfant2;données.enfant5]
définition f.i_ressources_ménage égal à 30 000 €
définition f.i_date_courante égal à |2020-05-01|
définition f.i_résidence égal à Métropole
règle f.i_personne_charge_effective_permanente_est_parent rempli
assertion f.i_montant_versé = 216,46€
déclaration champ d'application Test3:
f champ d'application InterfaceAllocationsFamiliales
données champ d'application Données
champ d'application Test3:
définition f.i_enfants égal à [données.enfant1]
définition f.i_ressources_ménage égal à 63540 €
définition f.i_date_courante égal à |2020-05-01|
définition f.i_résidence égal à Guyane
règle f.i_personne_charge_effective_permanente_est_parent rempli
assertion f.i_montant_versé = 24,37 €
déclaration champ d'application Test4:
f champ d'application InterfaceAllocationsFamiliales
données champ d'application Données
champ d'application Test4:
définition f.i_enfants égal à [données.enfant1; données.enfant3]
définition f.i_ressources_ménage égal à 67 250 €
définition f.i_date_courante égal à |2020-05-01|
définition f.i_résidence égal à Métropole
règle f.i_personne_charge_effective_permanente_est_parent rempli
assertion f.i_montant_versé = 99,46€
déclaration champ d'application Test5:
f champ d'application InterfaceAllocationsFamiliales
données champ d'application Données
champ d'application Test5:
définition f.i_enfants égal à [données.enfant1]
définition f.i_ressources_ménage égal à 30 000 €
définition f.i_date_courante égal à |2020-05-01|
définition f.i_résidence égal à Métropole
règle f.i_personne_charge_effective_permanente_est_parent rempli
assertion f.i_montant_versé = 0,00€
déclaration champ d'application Test6:
f champ d'application InterfaceAllocationsFamiliales
champ d'application Test6:
définition f.i_enfants égal à [EnfantEntrée {
-- d_identifiant: 0
-- d_date_de_naissance: |2009-11-10|
-- d_rémuneration_mensuelle: 439€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
};EnfantEntrée {
-- d_identifiant: 1
-- d_date_de_naissance: |2020-09-25|
-- d_rémuneration_mensuelle: 1949€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
}]
définition f.i_ressources_ménage égal à 78 830 €
définition f.i_date_courante égal à |2020-05-01|
définition f.i_résidence égal à Guadeloupe
règle f.i_personne_charge_effective_permanente_est_parent rempli
assertion f.i_montant_versé = 66,30€
déclaration champ d'application Test7:
f champ d'application InterfaceAllocationsFamiliales
données champ d'application Données
champ d'application Test7:
définition f.i_enfants égal à
[données.enfant1;données.enfant2;données.enfant3;données.enfant4]
définition f.i_ressources_ménage égal à 30 000 €
définition f.i_date_courante égal à |2021-02-01|
définition f.i_résidence égal à Métropole
règle f.i_personne_charge_effective_permanente_est_parent rempli
assertion f.i_montant_versé = 417,84€
déclaration champ d'application Test8:
f champ d'application InterfaceAllocationsFamiliales
champ d'application Test8:
définition f.i_enfants égal à [EnfantEntrée {
-- d_identifiant: 0
-- d_date_de_naissance: |2004-01-01|
-- d_rémuneration_mensuelle: 0€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
};EnfantEntrée {
-- d_identifiant: 1
-- d_date_de_naissance: |2005-01-01|
-- d_rémuneration_mensuelle: 0€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
}]
définition f.i_ressources_ménage égal à 69945 €
définition f.i_date_courante égal à |2021-01-01|
définition f.i_résidence égal à Métropole
règle f.i_personne_charge_effective_permanente_est_parent rempli
assertion f.i_montant_versé = 197,90 €
déclaration champ d'application Test9:
f champ d'application InterfaceAllocationsFamiliales
champ d'application Test9:
définition f.i_enfants égal à [EnfantEntrée {
-- d_identifiant: 0
-- d_date_de_naissance: |2001-07-27|
-- d_rémuneration_mensuelle: 1258€
-- d_prise_en_charge: ServicesSociauxAllocationVerséeAuxServicesSociaux
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
};EnfantEntrée {
-- d_identifiant: 1
-- d_date_de_naissance: |2008-04-27|
-- d_rémuneration_mensuelle: 1766€
-- d_prise_en_charge: ServicesSociauxAllocationVerséeAuxServicesSociaux
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
}]
définition f.i_ressources_ménage égal à 75786 €
définition f.i_date_courante égal à |2020-05-01|
définition f.i_résidence égal à Guadeloupe
règle f.i_personne_charge_effective_permanente_est_parent rempli
assertion f.i_montant_versé = 0€
déclaration champ d'application Test10:
f champ d'application InterfaceAllocationsFamiliales
champ d'application Test10:
définition f.i_enfants égal à [EnfantEntrée {
-- d_identifiant: 0
-- d_date_de_naissance: |2003-02-22|
-- d_rémuneration_mensuelle: 0€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
};EnfantEntrée {
-- d_identifiant: 1
-- d_date_de_naissance: |2013-09-30|
-- d_rémuneration_mensuelle: 300€
-- d_prise_en_charge: GardeAlternéePartageAllocations
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
}]
définition f.i_ressources_ménage égal à 30000 €
définition f.i_date_courante égal à |2020-04-20|
définition f.i_résidence égal à Métropole
règle f.i_personne_charge_effective_permanente_est_parent rempli
assertion f.i_montant_versé = 99,46€
déclaration champ d'application Test11:
f champ d'application InterfaceAllocationsFamiliales
champ d'application Test11:
définition f.i_enfants égal à [EnfantEntrée {
-- d_identifiant: 0
-- d_date_de_naissance: |2003-02-22|
-- d_rémuneration_mensuelle: 0€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
};EnfantEntrée {
-- d_identifiant: 1
-- d_date_de_naissance: |2013-09-30|
-- d_rémuneration_mensuelle: 300€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
};
EnfantEntrée {
-- d_identifiant: 2
-- d_date_de_naissance: |2007-04-16|
-- d_rémuneration_mensuelle: 0€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
}]
définition f.i_ressources_ménage égal à 30000 €
définition f.i_date_courante égal à |2021-12-31|
définition f.i_résidence égal à Métropole
règle f.i_personne_charge_effective_permanente_est_parent rempli
assertion f.i_montant_versé = 435,55€
déclaration champ d'application Test12:
f champ d'application InterfaceAllocationsFamiliales
champ d'application Test12:
définition f.i_enfants égal à [EnfantEntrée {
-- d_identifiant: 0
-- d_date_de_naissance: |2003-02-22|
-- d_rémuneration_mensuelle: 0€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
};EnfantEntrée {
-- d_identifiant: 1
-- d_date_de_naissance: |2013-09-30|
-- d_rémuneration_mensuelle: 300€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
};
EnfantEntrée {
-- d_identifiant: 2
-- d_date_de_naissance: |2007-04-16|
-- d_rémuneration_mensuelle: 0€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
};
EnfantEntrée {
-- d_identifiant: 3
-- d_date_de_naissance: |2012-02-02|
-- d_rémuneration_mensuelle: 0€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
}]
définition f.i_ressources_ménage égal à 20000 €
définition f.i_date_courante égal à |2019-08-26|
définition f.i_résidence égal à Mayotte
règle f.i_avait_enfant_à_charge_avant_1er_janvier_2012 rempli
règle f.i_personne_charge_effective_permanente_est_parent rempli
assertion f.i_montant_versé = 315,84€
déclaration champ d'application Test13:
f champ d'application InterfaceAllocationsFamiliales
champ d'application Test13:
définition f.i_enfants égal à [EnfantEntrée {
-- d_identifiant: 0
-- d_date_de_naissance: |2008-02-22|
-- d_rémuneration_mensuelle: 0€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
}]
définition f.i_ressources_ménage égal à 65000 €
définition f.i_date_courante égal à |2019-08-26|
définition f.i_résidence égal à Mayotte
règle f.i_personne_charge_effective_permanente_est_parent rempli
assertion f.i_montant_versé = 34,99€
déclaration champ d'application Test14:
f champ d'application InterfaceAllocationsFamiliales
champ d'application Test14:
définition f.i_enfants égal à [EnfantEntrée {
-- d_identifiant: 0
-- d_date_de_naissance: |2004-12-22|
-- d_rémuneration_mensuelle: 435€
-- d_prise_en_charge: EffectiveEtPermanente
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
};
EnfantEntrée {
-- d_identifiant: 1
-- d_date_de_naissance: |2001-12-05|
-- d_rémuneration_mensuelle: 1682€
-- d_prise_en_charge: GardeAlternéeAllocataireUnique
-- d_a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- d_bénéficie_titre_personnel_aide_personnelle_logement: faux
}]
définition f.i_ressources_ménage égal à 64033 €
définition f.i_date_courante égal à |2022-05-01|
définition f.i_résidence égal à Guadeloupe
règle f.i_personne_charge_effective_permanente_est_parent rempli
assertion f.i_montant_versé = 48,77€
```
```catala-test-inline
$ catala Typecheck
[RESULT] Typechecking successful!
```
```catala-test-inline
$ catala Interpret -s Test1 --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test2 --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test3 --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test4 --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test5 --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test6 --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test7 --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test8 --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test9 --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test10 --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test11 --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test12 --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test13 --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test13 --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret_Lcalc -s Test1 --avoid-exceptions
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret_Lcalc -s Test2 --avoid-exceptions
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret_Lcalc -s Test3 --avoid-exceptions
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret_Lcalc -s Test4 --avoid-exceptions
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret_Lcalc -s Test5 --avoid-exceptions
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret_Lcalc -s Test6 --avoid-exceptions
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret_Lcalc -s Test7 --avoid-exceptions
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret_Lcalc -s Test8 --avoid-exceptions
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret_Lcalc -s Test9 --avoid-exceptions
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret_Lcalc -s Test10 --avoid-exceptions
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret_Lcalc -s Test11 --avoid-exceptions
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret_Lcalc -s Test12 --avoid-exceptions
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret_Lcalc -s Test13 --avoid-exceptions
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret_Lcalc -s Test13 --avoid-exceptions
[RESULT] Computation successful!
```

View File

@ -1,70 +0,0 @@
> Inclusion: ../allocations_familiales.catala_fr
# Tests
```catala
déclaration champ d'application Données:
résultat enfant1 contenu Enfant
résultat enfant2 contenu Enfant
résultat enfant3 contenu Enfant
résultat enfant4 contenu Enfant
champ d'application Données:
définition enfant1 égal à Enfant {
-- identifiant: 1
-- obligation_scolaire : Pendant
-- date_de_naissance: |2007-01-01|
-- rémuneration_mensuelle: 0€
-- prise_en_charge: EffectiveEtPermanente
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- bénéficie_titre_personnel_aide_personnelle_logement: faux
}
définition enfant2 égal à Enfant {
-- identifiant: 2
-- obligation_scolaire : Après
-- date_de_naissance: |2003-01-01|
-- rémuneration_mensuelle: 1000€
-- prise_en_charge: EffectiveEtPermanente
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- bénéficie_titre_personnel_aide_personnelle_logement: faux
}
définition enfant3 égal à Enfant {
-- identifiant: 3
-- obligation_scolaire : Après
-- date_de_naissance: |2003-01-01|
-- rémuneration_mensuelle: 400€
-- prise_en_charge: EffectiveEtPermanente
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- bénéficie_titre_personnel_aide_personnelle_logement: faux
}
définition enfant4 égal à Enfant {
-- identifiant: 4
-- obligation_scolaire : Après
-- date_de_naissance: |1999-01-01|
-- rémuneration_mensuelle: 0€
-- prise_en_charge: EffectiveEtPermanente
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
-- bénéficie_titre_personnel_aide_personnelle_logement: faux
}
déclaration champ d'application Test1:
données champ d'application Données
f champ d'application PrestationsFamiliales
champ d'application Test1:
définition f.date_courante égal à |2020-05-01|
définition f.résidence égal à Métropole
assertion (f.droit_ouvert de données.enfant1)
assertion (non (f.droit_ouvert de données.enfant2))
assertion (f.droit_ouvert de données.enfant3)
assertion (non (f.droit_ouvert de données.enfant4))
```
```catala-test-inline
$ catala Interpret -s Test1 --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret_Lcalc -s Test1 --avoid-exceptions
[RESULT] Computation successful!
```

View File

@ -1,4 +0,0 @@
CATALA_LANG=fr
SRC=bmaf.catala_fr
include ../Makefile.common.mk

View File

@ -1,108 +0,0 @@
# Montant de la base mensuelle des allocations familiales
```catala-metadata
déclaration champ d'application BaseMensuelleAllocationsFamiliales:
entrée date_courante contenu date
résultat montant contenu argent
champ d'application BaseMensuelleAllocationsFamiliales:
# Ce programme ne peut pas être utilisé avec des dates trop anciennes,
# pour lesquelles les textes en vigueur n'ont pas été formalisés.
assertion date_courante >= |2019-04-01|
```
## Instruction ministérielle N°DSS/SD2B/2019/65 du 25 mars 2019 relative à la revalorisation au 1er avril 2019 des prestations familiales servies en métropole
Conformément à larticle L. 551-1 du code de la sécurité sociale, 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ée à larticle L. 161-25 du code de la
sécurité sociale. Au titre de lannée 2019, larticle 68 de la loi du 22
décembre 2018 de financement de la sécurité sociale a prévu, par dérogation
aux dispositions de larticle L. 161-25, une revalorisation de 0,3 % du montant
des prestations relevant de cet article.
Le montant précité de la base mensuelle de calcul des allocations
familiales (BMAF), en pourcentage duquel sont fixés les montants des prestations
familiales, est ainsi porté de 411,92 € à 413,16 € au 1er avril 2019.
```catala
champ d'application BaseMensuelleAllocationsFamiliales :
définition montant
sous condition
date_courante >= |2019-04-01| et
date_courante < |2020-04-01|
conséquence égal à 413,16 €
```
## Instruction interministérielle no DSS/SD2B/2020/33 du 18 février 2020 relative à la revalorisation au 1er avril 2020 des prestations familiales servies en métropole, en Guadeloupe, en Guyane, en Martinique, à La Réunion, à Saint-Barthélemy, à Saint-Martin et dans le département de Mayotte
Au titre de lannée 2020, larticle 81 de la loi du 24 décembre 2019 de
financement de la sécurité sociale a prévu, par dérogation aux dispositions
de larticle L. 161-25, une revalorisation de 0,3 % du montant des prestations
relevant de cet article.
Le montant précité de la base mensuelle de calcul des allocations familiales
(BMAF), en pourcentage duquel sont fxés les montants des prestations familiales,
est ainsi porté de 413,16 € à 414,4 € au 1er avril 2020.
```catala
champ d'application BaseMensuelleAllocationsFamiliales :
définition montant
sous condition
date_courante >= |2020-04-01| et
date_courante < |2021-04-01|
conséquence égal à 414,4 €
```
## Instruction interministérielle n°DSS/2B/2021/65 du 19 mars 2021 relative à la revalorisation au 1er avril 2021 des prestations familiales servies en métropole, en Guadeloupe, en Guyane, en Martinique, à la Réunion, à Saint-Barthélemy, à Saint-Martin et dans le département de Mayotte
Au 1er avril 2021, le coefficient de revalorisation de la BMAF est ainsi fixé à
1,001 soit un taux de revalorisation de la BMAF de 0,1 %. Le montant de cette
base mensuelle, en pourcentage duquel sont fixées les prestations familiales,
est donc porté de 414,4 € au 1er avril 2020 à 414,81 € au 1er avril 2021.
```catala
champ d'application BaseMensuelleAllocationsFamiliales :
définition montant
sous condition
date_courante >= |2021-04-01| et
date_courante < |2022-04-01|
conséquence égal à 414,81 €
```
## Instruction interministérielle n°DSS/2B/2022/82 du 28 mars 2022 relative à la revalorisation au 1er avril 2022 des prestations familiales servies en métropole, en Guadeloupe, en Guyane, en Martinique, à la Réunion, à Saint-Barthélemy, à Saint-Martin et dans le département de Mayotte
Au 1er avril 2022, le coefficient de revalorisation de la base mensuelle de
calcul des allocations familiales (BMAF) est ainsi fixé à 1,018 soit un taux
de revalorisation de la BMAF de 1,8 %. Le montant de cette base mensuelle,
en pourcentage duquel sont fixées les prestations familiales, est donc porté
de 414,81 € au 1er avril 2021 à 422,28 € au 1er avril 2022.
```catala
champ d'application BaseMensuelleAllocationsFamiliales :
définition montant
sous condition
date_courante >= |2022-04-01| et
date_courante < |2023-04-01|
conséquence égal à 422,28 €
```
## Instruction interministérielle N° DSS/2B/2023/41 du 24 mars 2023 relative à la revalorisation au 1er avril 2023 des prestations familiales servies en métropole, en Guadeloupe, en Guyane, en Martinique, à la Réunion, à Saint-Barthélemy, à Saint-Martin et dans le département de Mayotte
Au 1er avril 2023, le coefficient de revalorisation de la base mensuelle des
allocations familiales (BMAF) mentionné à larticle L. 551-1 du code de la
sécurité sociale1 est fixé à 1,056 soit un taux de revalorisation de la BMAF
de 5,6 %, déduction faite de la revalorisation anticipée de 4% entrée en
vigueur en juillet 2022 et introduite par larticle 9 de la loi n° 2022- 1158
du 16 août 2022 portant mesures d'urgence pour la protection du pouvoir
d'achat. Le montant de cette base mensuelle, en pourcentage duquel sont fixées
les prestations familiales, est donc porté à 445,93 €.
```catala
champ d'application BaseMensuelleAllocationsFamiliales :
définition montant
sous condition
date_courante >= |2023-04-01|
conséquence égal à 445,93 €
```

View File

@ -1,14 +0,0 @@
*.aux
*.dvi
*.fdb_latexmk
*.fls
*.log
*.out
*.fls
*.tex
*.pdf
_minted*
*.toc
*.pyg
*.d
*.ml

View File

@ -1,4 +0,0 @@
CATALA_LANG=fr
SRC=droit_successions.catala_fr
include ../Makefile.common.mk

View File

@ -1,141 +0,0 @@
## Code civil
### Livre III : Des différentes manières dont on acquiert la propriété
#### Titre II : Des libéralités
##### Chapitre III : De la réserve héréditaire, de la quotité disponible et de la réduction
####### Section 1 : De la réserve héréditaire et de la quotité disponible
######## Article 912 | LEGIARTI000006435530
La réserve héréditaire est la part des biens et droits successoraux dont la
loi assure la dévolution libre de charges à certains héritiers dits réservataires,
s'ils sont appelés à la succession et s'ils l'acceptent.
La quotité disponible est la part des biens et droits successoraux qui n'est
pas réservée par la loi et dont le défunt a pu disposer librement par des
libéralités.
```catala-metadata
déclaration structure Enfant:
donnée identifiant contenu entier
donnée a_renoncé_à_la_succession contenu booléen
donnée est_représenté contenu booléen
donnée est_tenu_au_rapport_libéralité contenu booléen
déclaration structure BienUsufruitRenteViagère:
donnée valeur contenu argent
donnée prise_en_compte_pour_réserve_héréditaire contenu booléen
déclaration champ d'application RéserveHéréditaire:
résultat quotité_réserve_héréditaire contenu décimal
entrée enfants contenu liste de Enfant
interne enfant_pris_en_compte_réserve_héréditaire contenu booléen
dépend de enfant contenu Enfant
interne enfants_réserve_héréditaire contenu liste de Enfant
entrée conjoint_survivant_non_divorcé condition
entrée patrimoine_total contenu argent
entrée biens_usufruit_rente_viagère contenu liste de BienUsufruitRenteViagère
résultat patrimoine_assiette_réserve_héréditaire contenu argent
résultat montant_réserve_héréditaire contenu argent
```
######## Article 913 | LEGIARTI000006435557
Les libéralités, soit par actes entre vifs, soit par testament, ne pourront
excéder la moitié des biens du disposant, s'il ne laisse à son décès qu'un
enfant ; le tiers, s'il laisse deux enfants ; le quart, s'il en laisse trois
ou un plus grand nombre.
```catala
champ d'application RéserveHéréditaire:
définition quotité_réserve_héréditaire
sous condition nombre de enfants_réserve_héréditaire = 1 conséquence
égal à 1,0 / 2,0
définition quotité_réserve_héréditaire
sous condition nombre de enfants_réserve_héréditaire = 2 conséquence
égal à 1,0 / 3,0
définition quotité_réserve_héréditaire
sous condition nombre de enfants_réserve_héréditaire >= 3 conséquence
égal à 1,0 / 4,0
```
L'enfant qui renonce à la succession n'est compris dans le nombre d'enfants
laissés par le défunt que s'il est représenté ou s'il est tenu au rapport
d'une libéralité en application des dispositions de l'article 845.
```catala
champ d'application RéserveHéréditaire:
définition enfant_pris_en_compte_réserve_héréditaire de enfant égal à
si enfant.a_renoncé_à_la_succession alors
(enfant.est_représenté ou enfant.est_tenu_au_rapport_libéralité)
sinon vrai
définition enfants_réserve_héréditaire égal à
enfant parmi enfants tel que
(enfant_pris_en_compte_réserve_héréditaire de enfant)
```
######## Article 913-1 | LEGIARTI000006433705
Sont compris dans l'article 913, sous le nom d'enfants, les descendants en
quelque degré que ce soit, encore qu'ils ne doivent être comptés que pour
l'enfant dont ils tiennent la place dans la succession du disposant.
```catala
# Rien à ajouter à la formalisation de l'article 913
```
######## Article 914-1 | LEGIARTI000006433720
Les libéralités, par actes entre vifs ou par testament, ne pourront excéder
les trois quarts des biens si, à défaut de descendant, le défunt laisse un
conjoint survivant, non divorcé.
```catala
champ d'application RéserveHéréditaire:
définition quotité_réserve_héréditaire
sous condition nombre de enfants_réserve_héréditaire = 0 et conjoint_survivant_non_divorcé
conséquence égal à 1,0 - (3,0 / 4,0)
```
NOTA:
Loi n° 2006-728 du 23 juin 2006 article 29 : Une anomalie s'est glissée lors
de la rédaction de l'article 29 26°. Il faut lire article 914-1 au lieu de 914-4.
######## Article 916 | LEGIARTI000006435592
A défaut de descendant et de conjoint survivant non divorcé, les libéralités
par actes entre vifs ou testamentaires pourront épuiser la totalité des biens.
```catala
champ d'application RéserveHéréditaire:
définition quotité_réserve_héréditaire
sous condition nombre de enfants_réserve_héréditaire = 0 et (non conjoint_survivant_non_divorcé)
conséquence égal à 0,0
```
######## Article 917 | LEGIARTI000006433731
Si la disposition par acte entre vifs ou par testament est d'un usufruit ou
d'une rente viagère dont la valeur excède la quotité disponible, les héritiers
au profit desquels la loi fait une réserve, auront l'option, ou d'exécuter
cette disposition, ou de faire l'abandon de la propriété de la quotité
disponible.
```catala
champ d'application RéserveHéréditaire:
définition patrimoine_assiette_réserve_héréditaire égal à
patrimoine_total - (
somme argent de
(si bien.prise_en_compte_pour_réserve_héréditaire
alors 0 € sinon bien.valeur)
pour bien parmi biens_usufruit_rente_viagère)
définition montant_réserve_héréditaire égal à
patrimoine_assiette_réserve_héréditaire * quotité_réserve_héréditaire
```

View File

@ -1,88 +0,0 @@
> Inclusion: ../droit_successions.catala_fr
# Tests
```catala
déclaration champ d'application Enfants:
résultat base contenu Enfant dépend de identifiant contenu entier
champ d'application Enfants:
définition base de identifiant égal à
Enfant {
-- identifiant: 0
-- a_renoncé_à_la_succession: faux
-- est_représenté: faux
-- est_tenu_au_rapport_libéralité: faux
}
```
```catala
déclaration champ d'application Test1:
réserve_héréditaire champ d'application RéserveHéréditaire
champ d'application Test1:
définition réserve_héréditaire.patrimoine_total égal à 300 000€
définition réserve_héréditaire.enfants égal à []
définition réserve_héréditaire.biens_usufruit_rente_viagère égal à []
assertion réserve_héréditaire.quotité_réserve_héréditaire = 0,0
```
```catala
déclaration champ d'application Test2:
réserve_héréditaire champ d'application RéserveHéréditaire
enfants champ d'application Enfants
champ d'application Test2:
définition réserve_héréditaire.patrimoine_total égal à 300 000 €
définition réserve_héréditaire.enfants égal à [enfants.base de 0]
définition réserve_héréditaire.biens_usufruit_rente_viagère égal à []
assertion réserve_héréditaire.montant_réserve_héréditaire = 150 000 €
```
```catala
déclaration champ d'application Test3:
réserve_héréditaire champ d'application RéserveHéréditaire
enfants champ d'application Enfants
champ d'application Test3:
définition réserve_héréditaire.patrimoine_total égal à 300 000 €
définition réserve_héréditaire.enfants égal à
[enfants.base de 0; enfants.base de 1]
définition réserve_héréditaire.biens_usufruit_rente_viagère égal à []
assertion réserve_héréditaire.montant_réserve_héréditaire = 100 000 €
```
```catala
déclaration champ d'application Test4:
réserve_héréditaire champ d'application RéserveHéréditaire
enfants champ d'application Enfants
champ d'application Test4:
définition réserve_héréditaire.patrimoine_total égal à 300 000 €
définition réserve_héréditaire.enfants égal à
[enfants.base de 0; enfants.base de 1]
définition réserve_héréditaire.biens_usufruit_rente_viagère égal à
[BienUsufruitRenteViagère { -- valeur: 250 000 € -- prise_en_compte_pour_réserve_héréditaire : faux }]
assertion réserve_héréditaire.patrimoine_assiette_réserve_héréditaire = 50 000 €
assertion réserve_héréditaire.montant_réserve_héréditaire = 16666,67 €
```
```catala-test-inline
$ catala Interpret -s Test1
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test2
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test3
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test4
[RESULT] Computation successful!
```

View File

@ -1,14 +0,0 @@
*.aux
*.dvi
*.fdb_latexmk
*.fls
*.log
*.out
*.fls
*.tex
*.pdf
_minted*
*.toc
*.pyg
*.d
*.ml

View File

@ -1,4 +0,0 @@
CATALA_LANG=pl
SRC=polish_tax_code.catala_pl
include ../Makefile.common.mk

View File

@ -1,145 +0,0 @@
### Rozdział 3
#### Art. 7.
1. Stawki podatku wynoszą:
1) od umowy sprzedaży:
a) nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własnościowego spółdzielczego prawa do lokalu mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z przepisów prawa spółdzielczego: prawa do domu jednorodzinnego oraz prawa do lokalu w małym domu mieszkalnym 2%,
```catala
deklaracja zakres UmowaSprzedaży:
kontekst kwota typu pieniądze
kontekst inne_prawa_majątkowe warunek
kontekst stawka_podatku typu dziesiętny
wyjście podatek typu pieniądze
zakres UmowaSprzedaży:
definicja podatek wynosi
kwota * stawka_podatku
zakres UmowaSprzedaży:
etykieta a7_u1_p1_ppa
definicja stawka_podatku wynosi 2%
```
b) innych praw majątkowych 1%;
```catala
zakres UmowaSprzedaży:
wyjątek a7_u1_p1_ppa
definicja stawka_podatku pod warunkiem
inne_prawa_majątkowe
konsekwencja wynosi 1%
```
2) od umów zamiany, dożywocia, o dział spadku, o zniesienie współwłasności oraz darowizny:
a) przy przeniesieniu własności nieruchomości, rzeczy ruchomych, prawa użytkowania wieczystego, własnościowego spółdzielczego prawa do lokalu
mieszkalnego, spółdzielczego prawa do lokalu użytkowego oraz wynikających z przepisów prawa spółdzielczego: prawa do domu jednorodzinnego oraz prawa do lokalu w małym domu mieszkalnym 2%,
```catala
deklaracja zakres UmowaZamianyLubDarowizny:
kontekst kwota typu pieniądze
kontekst inne_prawa_majątkowe warunek
kontekst stawka_podatku typu dziesiętny
wyjście podatek typu pieniądze
zakres UmowaZamianyLubDarowizny:
definicja podatek wynosi
kwota * stawka_podatku
zakres UmowaZamianyLubDarowizny:
etykieta a7_u1_p2_ppa
definicja stawka_podatku wynosi 2%
```
b) przy przeniesieniu własności innych praw majątkowych 1%;
```catala
zakres UmowaZamianyLubDarowizny:
wyjątek a7_u1_p2_ppa
definicja stawka_podatku pod warunkiem
inne_prawa_majątkowe
konsekwencja wynosi 1%
```
3) od umowy ustanowienia odpłatnego użytkowania, w tym nieprawidłowego, oraz odpłatnej służebności 1%, z zastrzeżeniem ust. 5;
```catala
deklaracja zakres OdpłatneUżytkowanie:
kontekst kwota typu pieniądze
kontekst stawka_podatku typu dziesiętny
wyjście podatek typu pieniądze
zakres OdpłatneUżytkowanie:
definicja podatek wynosi
kwota * stawka_podatku
zakres OdpłatneUżytkowanie:
definicja stawka_podatku wynosi 1%
```
4) od umowy pożyczki oraz depozytu nieprawidłowego 0,5%, z zastrzeżeniem ust. 5;
```catala
deklaracja zakres PożyczkaLubDepozytNieprawidłowy:
kontekst kwota typu pieniądze
kontekst stawka_podatku typu dziesiętny
wyjście podatek typu pieniądze
zakres PożyczkaLubDepozytNieprawidłowy:
definicja podatek wynosi
kwota * stawka_podatku # TODO: extract somehow?
# this exists in every declaration
zakres PożyczkaLubDepozytNieprawidłowy:
definicja stawka_podatku wynosi 0.5%
```
7) od ustanowienia hipoteki:
a) na zabezpieczenie wierzytelności istniejących od kwoty zabezpieczonej wierzytelności 0,1%,
```catala
deklaracja zakres Hipoteka:
kontekst kwota typu pieniądze
kontekst wysokość_nieustalona warunek
kontekst stawka_podatku typu dziesiętny
kontekst podatek typu pieniądze
zakres Hipoteka:
etykieta a7_u1_p7_ppa
definicja podatek wynosi
kwota * stawka_podatku
zakres Hipoteka:
definicja stawka_podatku wynosi 0.1%
```
b) na zabezpieczenie wierzytelności o wysokości nieustalonej 19 zł;
```catala
zakres Hipoteka:
wyjątek a7_u1_p7_ppa
definicja podatek pod warunkiem
wysokość_nieustalona
konsekwencja wynosi 19 PLN
```
9) od umowy spółki 0,5%.
```catala
deklaracja zakres UmowaSpółki:
kontekst kwota typu pieniądze
kontekst stawka_podatku typu dziesiętny
wyjście podatek typu pieniądze
zakres UmowaSpółki:
definicja podatek wynosi
kwota * stawka_podatku
zakres UmowaSpółki:
definicja stawka_podatku wynosi 0.5%
```

View File

@ -1 +0,0 @@
## Ustawa z dnia 9 września 2000 r. o podatku od czynności cywilnoprawnych

View File

@ -1,3 +0,0 @@
> Include: podatek_od_czynnosci_cywilnoprawnych/wstep.catala_pl
> Include: podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl

View File

@ -1,33 +0,0 @@
> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl
## Test - Art. 7 ustęp 1 punkt 1
```catala
deklaracja zakres Test_A7_U1_P1_PPa:
sprzedaż zakres UmowaSprzedaży
zakres Test_A7_U1_P1_PPa:
definicja sprzedaż.kwota wynosi 100 PLN
asercja sprzedaż.podatek = 2 PLN
deklaracja zakres Test_A7_U1_P1_PPb:
sprzedaż zakres UmowaSprzedaży
zakres Test_A7_U1_P1_PPb:
definicja sprzedaż.kwota wynosi 100 PLN
definicja sprzedaż.inne_prawa_majątkowe wynosi prawda
asercja sprzedaż.podatek = 1 PLN
```
```catala-test-inline
$ catala Interpret -s Test_A7_U1_P1_PPa --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test_A7_U1_P1_PPb --disable-warnings
[RESULT] Computation successful!
```

View File

@ -1,33 +0,0 @@
> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl
## Test - Art. 7 ustęp 1 punkt 2
```catala
deklaracja zakres Test_A7_U1_P2_PPa:
sprzedaż zakres UmowaZamianyLubDarowizny
zakres Test_A7_U1_P2_PPa:
definicja sprzedaż.kwota wynosi 100 PLN
asercja sprzedaż.podatek = 2 PLN
deklaracja zakres Test_A7_U1_P2_PPb:
sprzedaż zakres UmowaZamianyLubDarowizny
zakres Test_A7_U1_P2_PPb:
definicja sprzedaż.kwota wynosi 100 PLN
definicja sprzedaż.inne_prawa_majątkowe wynosi prawda
asercja sprzedaż.podatek = 1 PLN
```
```catala-test-inline
$ catala Interpret -s Test_A7_U1_P2_PPa --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s Test_A7_U1_P2_PPb --disable-warnings
[RESULT] Computation successful!
```

View File

@ -1,17 +0,0 @@
> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl
## Test - Art. 7 ustęp 1 punkt 3
```catala
deklaracja zakres Test_A7_U1_P3:
sprzedaż zakres OdpłatneUżytkowanie
zakres Test_A7_U1_P3:
definicja sprzedaż.kwota wynosi 100 PLN
asercja sprzedaż.podatek = 1 PLN
```
```catala-test-inline
$ catala Interpret -s Test_A7_U1_P3 --disable-warnings
[RESULT] Computation successful!
```

View File

@ -1,17 +0,0 @@
> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl
## Test - Art. 7 ustęp 1 punkt 4
```catala
deklaracja zakres Test_A7_U1_P4:
sprzedaż zakres PożyczkaLubDepozytNieprawidłowy
zakres Test_A7_U1_P4:
definicja sprzedaż.kwota wynosi 200 PLN
asercja sprzedaż.podatek = 1 PLN
```
```catala-test-inline
$ catala Interpret -s Test_A7_U1_P4 --disable-warnings
[RESULT] Computation successful!
```

View File

@ -1,17 +0,0 @@
> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl
## Test - Art. 7 ustęp 1 punkt 7
```catala
deklaracja zakres Test_A7_U1_P7:
sprzedaż zakres PożyczkaLubDepozytNieprawidłowy
zakres Test_A7_U1_P7:
definicja sprzedaż.kwota wynosi 200 PLN
asercja sprzedaż.podatek = 1 PLN
```
```catala-test-inline
$ catala Interpret -s Test_A7_U1_P7 --disable-warnings
[RESULT] Computation successful!
```

View File

@ -1,17 +0,0 @@
> Include: ../podatek_od_czynnosci_cywilnoprawnych/rozdzial_3.catala_pl
## Test - Art. 7 ustęp 1 punkt 9
```catala
deklaracja zakres Test_A7_U1_P9:
sprzedaż zakres UmowaSpółki
zakres Test_A7_U1_P9:
definicja sprzedaż.kwota wynosi 1000 PLN
asercja sprzedaż.podatek = 5 PLN
```
```catala-test-inline
$ catala Interpret -s Test_A7_U1_P9 --disable-warnings
[RESULT] Computation successful!
```

View File

@ -1,4 +0,0 @@
CATALA_LANG=fr
SRC=prestations_familiales.catala_fr
include ../Makefile.common.mk

View File

@ -1,10 +0,0 @@
> Inclusion: ../smic/smic.catala_fr
> Inclusion: prologue.catala_fr
# Code de la sécurité sociale
> Inclusion: sécurité_sociale_L.catala_fr
> Inclusion: sécurité_sociale_R.catala_fr

View File

@ -1,38 +0,0 @@
# Prologue : prestations familiales
Avant de présenter les textes réglementaires qui régissent le calcul des
prestations familiales, il est nécessaire de définir les structures de données
informatiques qui modélisent la situation dont parlent ces textes législatifs.
```catala-metadata
déclaration énumération SituationObligationScolaire:
-- Avant
-- Pendant
-- Après
déclaration structure EnfantPrestationsFamiliales :
donnée identifiant contenu entier
donnée obligation_scolaire contenu SituationObligationScolaire
donnée rémuneration_mensuelle contenu argent
donnée date_de_naissance contenu date
donnée a_déjà_ouvert_droit_aux_allocations_familiales contenu booléen
déclaration champ d'application ÉligibilitéPrestationsFamiliales:
entrée date_courante contenu date
entrée résidence contenu Collectivité
interne plafond_l512_3_2 contenu argent
contexte résultat âge_l512_3_2 contenu durée
résultat droit_ouvert condition
dépend de enfant contenu EnfantPrestationsFamiliales
résultat conditions_hors_âge condition
dépend de enfant contenu EnfantPrestationsFamiliales
résultat régime_outre_mer_l751_1 condition
smic champ d'application Smic
champ d'application ÉligibilitéPrestationsFamiliales:
définition smic.résidence égal à résidence
définition smic.date_courante égal à date_courante
```

View File

@ -1,130 +0,0 @@
## Partie législative
### Livre 5 : Prestations familiales et prestations assimilées
#### Titre 1 : Champ d'application - Généralités
##### Chapitre 1er : Liste des prestations
###### Article L511-1 | LEGIARTI000041979747
Les prestations familiales comprennent :
1°) la prestation d'accueil du jeune enfant ;
2°) les allocations familiales ;
3°) le complément familial ;
4°) L'allocation de logement régie par les dispositions du livre VIII du code de la construction et de l'habitation ;
5°) l'allocation d'éducation de l'enfant handicapé ;
6°) l'allocation de soutien familial ;
7°) l'allocation de rentrée scolaire ;
8°) L'allocation forfaitaire versée en cas de décès d'un enfant ;
9°) l'allocation journalière de présence parentale.
NOTA :
Conformément au IV de larticle 5 de la loi n° 2020-692 du 8 juin 2020,
ces dispositions entrent en vigueur à une date fixée par décret, et au plus
tard à compter du 1er janvier 2022, au titre des enfants dont le décès
intervient à compter de cette date. Se reporter aux dispositions du V du
même article en ce qui concerne le versement d'une l'allocation forfaitaire
transitoire.
##### Chapitre 2 : Champ d'application
###### Article L512-3 | LEGIARTI000041979743
Sous réserve des règles particulières à chaque prestation,
ouvre droit aux prestations familiales :
1°) tout enfant jusqu'à la fin de l'obligation scolaire ;
```catala
champ d'application ÉligibilitéPrestationsFamiliales :
étiquette cas_base règle droit_ouvert de enfant sous condition
enfant.obligation_scolaire sous forme Avant ou
enfant.obligation_scolaire sous forme Pendant
conséquence rempli
```
2°) après la fin de l'obligation scolaire, et jusqu'à un âge limite, tout enfant
dont la rémunération éventuelle n'excède pas un plafond.
```catala
champ d'application ÉligibilitéPrestationsFamiliales :
étiquette cas_base règle droit_ouvert de enfant sous condition
enfant.obligation_scolaire sous forme Après et
(enfant.rémuneration_mensuelle <= plafond_l512_3_2) et
(résultat de VérificationÂgeSupérieurÀ avec
{ -- date_naissance: enfant.date_de_naissance
-- date_courante: date_courante
-- années: âge_l512_3_2 }).est_supérieur
conséquence rempli
# On définit les conditions hors âge d'abord car elles
# sont référencées plus tard dans l'article L521-1
règle conditions_hors_âge de enfant sous condition
(enfant.obligation_scolaire sous forme Avant ou
enfant.obligation_scolaire sous forme Pendant ou
enfant.obligation_scolaire sous forme Après) et
(enfant.rémuneration_mensuelle <=
plafond_l512_3_2)
conséquence rempli
```
Toutefois, pour l'attribution du complément familial et de l'allocation de
logement mentionnés aux 3° et 4° de l'article L. 511-1 , l'âge limite peut être
différent de celui mentionné au 2° du présent article.
Pour l'attribution de l'allocation forfaitaire versée en cas de décès d'un enfant
prévue à l'article L. 545-1, l'âge limite retenu peut être différent de celui
fixé en application du 2° du présent article et la condition relative à la
rémunération de l'enfant n'est pas exigée.
NOTA : Conformément au IV de larticle 5 de la loi n° 2020-692 du 8 juin 2020,
ces dispositions entrent en vigueur à une date fixée par décret, et au plus
tard à compter du 1er janvier 2022, au titre des enfants dont le décès intervient
à compter de cette date. Se reporter aux dispositions du V du même article en
ce qui concerne le versement d'une l'allocation forfaitaire transitoire.
```catala
# Sera géré avec une exception dans Catala. Le texte est équivalent
# à une méta-propriété du code à vérifier : i.e. pas d'exceptions pour
# cet âge autre part que pour Complément Familial ou AllocationLogement.
```
### Livre 7 : Régimes divers - Dispositions diverses
#### Titre 5 : Dispositions particulières à la Guadeloupe, à la Guyane, à la Martinique, à La Réunion, à Saint-Barthélemy et à Saint-Martin
##### Chapitre 1er : Généralités
###### Article L751-1|LEGIARTI000031323778
Les dispositions du présent titre s'appliquent en Guadeloupe, en Guyane,
en Martinique, à La Réunion, à Saint-Barthélemy et à Saint-Martin à
l'ensemble des bénéficiaires de la législation générale de sécurité
sociale, y compris les membres des professions agricoles.
```catala
# Angle mort: ici nous n'avons pas formalisé la partie sur la législation
# générale de sécurité sociale et les membres des professions agricoles.
champ d'application ÉligibilitéPrestationsFamiliales :
règle régime_outre_mer_l751_1 sous condition
(résidence = Guadeloupe) ou
(résidence = Guyane) ou
(résidence = Martinique) ou
(résidence = LaRéunion) ou
(résidence = SaintBarthélemy) ou
(résidence = SaintMartin)
conséquence rempli
```

View File

@ -1,65 +0,0 @@
## Partie réglementaire - Décrets en Conseil d'Etat
### Livre 5 : Prestations familiales et prestations assimilées
#### Titre 1 : Champ d'application - Généralités
##### Chapitre 2 : Champ d'application.
###### Article R512-2|LEGIARTI000006750602
Les enfants ouvrent droit aux prestations familiales jusqu'à l'âge de vingt
ans sous réserve que leur rémunération n'excède pas le plafond fixé au deuxième
alinéa du présent article.
```catala
# Attention: ici la condition de ressources au dessous du plafond est une
# répétition par rapport au texte de L512-3. On ne remet donc pas le code
# ici correspondant à cette limitation.
champ d'application ÉligibilitéPrestationsFamiliales :
définition âge_l512_3_2 égal à 20 an
```
Le plafond de rémunération mentionné au 2° de l'article L. 512-3 est égal, pour
un mois, à 55 % du salaire minimum interprofessionnel de croissance défini aux
articles L. 141-1 à L. 141-9 du code du travail, multiplié par 169.
```catala
champ d'application ÉligibilitéPrestationsFamiliales :
définition plafond_l512_3_2 égal à
(smic.brut_horaire * 55 %) * 169,0
```
Pour ceux des enfants qui bénéficient d'avantages en nature, l'évaluation de ces
avantages devra être faite suivant les barèmes fixés pour l'application de la
législation sur les assurances sociales.
```catala
# Le programme Catala ne tient pas en compte des avantages en nature.
# TODO: Liane, faire de la recherche juridique sur le sujet.
```
### Livre 7 : Régimes divers - Dispositions diverses
#### Titre 5 : Départements d'outre-mer
##### Chapitre 5 : Prestations familiales et prestations assimilées
###### Article R755-0-2|LEGIARTI000006752633
Le plafond de rémunération des enfants à charge mentionnés à l'article
L. 512-3 est égal, pour un mois, à 55 % du salaire minimum de croissance en
vigueur dans chacun des départements mentionnés à l'article L. 751-1 ,
multiplié par 169.
```catala
champ d'application ÉligibilitéPrestationsFamiliales :
exception
définition plafond_l512_3_2
sous condition régime_outre_mer_l751_1
conséquence égal à
(smic.brut_horaire * 55%) * 169,0
```

View File

@ -1,58 +0,0 @@
> Inclusion: ../prestations_familiales.catala_fr
# Tests
```catala
déclaration champ d'application Données:
résultat enfant1 contenu EnfantPrestationsFamiliales
résultat enfant2 contenu EnfantPrestationsFamiliales
résultat enfant3 contenu EnfantPrestationsFamiliales
résultat enfant4 contenu EnfantPrestationsFamiliales
champ d'application Données:
définition enfant1 égal à EnfantPrestationsFamiliales {
-- identifiant: 1
-- obligation_scolaire : Pendant
-- date_de_naissance: |2007-01-01|
-- rémuneration_mensuelle: 0€
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
}
définition enfant2 égal à EnfantPrestationsFamiliales {
-- identifiant: 2
-- obligation_scolaire : Après
-- date_de_naissance: |2003-01-01|
-- rémuneration_mensuelle: 1000€
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
}
définition enfant3 égal à EnfantPrestationsFamiliales {
-- identifiant: 3
-- obligation_scolaire : Après
-- date_de_naissance: |2003-01-01|
-- rémuneration_mensuelle: 400€
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
}
définition enfant4 égal à EnfantPrestationsFamiliales {
-- identifiant: 4
-- obligation_scolaire : Après
-- date_de_naissance: |1999-01-01|
-- rémuneration_mensuelle: 0€
-- a_déjà_ouvert_droit_aux_allocations_familiales: vrai
}
déclaration champ d'application Test1:
données champ d'application Données
f champ d'application ÉligibilitéPrestationsFamiliales
champ d'application Test1:
définition f.date_courante égal à |2020-05-01|
définition f.résidence égal à Métropole
assertion (f.droit_ouvert de données.enfant1)
assertion (non (f.droit_ouvert de données.enfant2))
assertion (f.droit_ouvert de données.enfant3)
assertion (non (f.droit_ouvert de données.enfant4))
```
```catala-test-inline
$ catala Interpret -s Test1 --disable-warnings
[RESULT] Computation successful!
```

View File

@ -1,4 +0,0 @@
CATALA_LANG=fr
SRC=prologue.catala_fr
include ../Makefile.common.mk

View File

@ -1,38 +0,0 @@
```catala-metadata
# Cette catégorisation des collectivités d'outre-mer est pour l'instant plate
# mais on pourrait la subdiviser plus finement selon les conseils du guide
# de légistique du Conseil d'État. En effet les articles 73 et 74 de la
# Constitution établissent deux régimes différents pour les collectivités
# d'outre-mer.
déclaration énumération Collectivité :
-- Guadeloupe
-- Guyane
-- Martinique
-- LaRéunion
-- SaintBarthélemy
-- SaintMartin
-- Métropole
-- SaintPierreEtMiquelon
-- Mayotte
déclaration champ d'application VérificationÂgeInférieurOuÉgalÀ:
entrée date_naissance contenu date
entrée date_courante contenu date
entrée années contenu durée
résultat est_inférieur_ou_égal contenu booléen
champ d'application VérificationÂgeInférieurOuÉgalÀ:
définition est_inférieur_ou_égal égal à
date_naissance + années <= date_courante
date arrondi croissant
déclaration champ d'application VérificationÂgeSupérieurÀ:
entrée date_naissance contenu date
entrée date_courante contenu date
entrée années contenu durée
résultat est_supérieur contenu booléen
champ d'application VérificationÂgeSupérieurÀ:
définition est_supérieur égal à date_naissance + années > date_courante
date arrondi croissant
```

View File

@ -1,4 +0,0 @@
CATALA_LANG=fr
SRC=smic.catala_fr
include ../Makefile.common.mk

View File

@ -1,331 +0,0 @@
# Montant du salaire minimum de croissance
## Prologue
> Inclusion: ../prologue_france/prologue.catala_fr
```catala-metadata
déclaration champ d'application Smic :
entrée date_courante contenu date
entrée résidence contenu Collectivité
résultat brut_horaire contenu argent
champ d'application Smic :
# Ce programme ne peut pas être utilisé avec des dates trop anciennes,
# pour lesquelles les textes en vigueur n'ont pas été formalisés.
assertion date_courante >= |2019-01-01|
```
## Décret n° 2018-1173 du 19 décembre 2018 portant relèvement du salaire minimum de croissance
### Article 1 | JORFARTI000037833214
A compter du 1er janvier 2019, pour les catégories de travailleurs mentionnés à
l' article L. 2211-1 du code du travail , le montant du salaire minimum de
croissance est relevé dans les conditions ci-après :
1° En métropole, en Guadeloupe, en Guyane, en Martinique, à La Réunion,
à Saint-Barthélemy, à Saint-Martin et à Saint-Pierre-et-Miquelon,
son montant est porté à 10,03 € l'heure.
```catala
champ d'application Smic :
définition brut_horaire sous condition
date_courante >= |2019-01-01| et date_courante <= |2019-12-31| et (
(résidence = Métropole) ou
(résidence = Guadeloupe) ou
(résidence = Guyane) ou
(résidence = Martinique) ou
(résidence = LaRéunion) ou
(résidence = SaintBarthélemy) ou
(résidence = SaintMartin) ou
(résidence = SaintPierreEtMiquelon)
)
conséquence égal à 10,03 €
```
2° A Mayotte, son montant est fixé à 7,57 € l'heure.
```catala
champ d'application Smic :
définition brut_horaire sous condition
date_courante >= |2019-01-01| et date_courante <= |2019-12-31| et (
(résidence = Mayotte)
)
conséquence égal à 7,57 €
```
## Décret n° 2019-1387 du 18 décembre 2019 portant relèvement du salaire minimum de croissance
### Article 1 | LEGIARTI000039640195
A compter du 1er janvier 2020, pour les catégories de travailleurs mentionnés à
l' article L. 2211-1 du code du travail , le montant du salaire minimum de
croissance est relevé dans les conditions ci-après :
1° En métropole, en Guadeloupe, en Guyane, en Martinique, à La Réunion,
à Saint-Barthélemy, à Saint-Martin et à Saint-Pierre-et-Miquelon,
son montant est porté à 10,15 € l'heure ;
```catala
champ d'application Smic :
définition brut_horaire sous condition
date_courante >= |2020-01-01| et date_courante <= |2020-12-31| et (
(résidence = Métropole) ou
(résidence = Guadeloupe) ou
(résidence = Guyane) ou
(résidence = Martinique) ou
(résidence = LaRéunion) ou
(résidence = SaintBarthélemy) ou
(résidence = SaintMartin) ou
(résidence = SaintPierreEtMiquelon)
)
conséquence égal à 10,15 €
```
2° A Mayotte, son montant est fixé à 7,66 € l'heure.
```catala
champ d'application Smic :
définition brut_horaire sous condition
date_courante >= |2020-01-01| et date_courante <= |2020-12-31| et (
(résidence = Mayotte)
)
conséquence égal à 7,66 €
```
## Décret n° 2020-1598 du 16 décembre 2020 portant relèvement du salaire minimum de croissance
### Article 1 | JORFARTI000042677367
A compter du 1er janvier 2021, pour les catégories de travailleurs mentionnés à
l' article L. 2211-1 du code du travail , le montant du salaire minimum de
croissance est relevé dans les conditions ci-après :
1° En métropole, en Guadeloupe, en Guyane, en Martinique, à La Réunion,
à Saint-Barthélemy, à Saint-Martin et à Saint-Pierre-et-Miquelon,
son montant est porté à 10,25 € l'heure ;
```catala
champ d'application Smic :
définition brut_horaire sous condition
date_courante >= |2021-01-01| et date_courante <= |2021-12-31| et (
(résidence = Métropole) ou
(résidence = Guadeloupe) ou
(résidence = Guyane) ou
(résidence = Martinique) ou
(résidence = LaRéunion) ou
(résidence = SaintBarthélemy) ou
(résidence = SaintMartin) ou
(résidence = SaintPierreEtMiquelon)
)
conséquence égal à 10,25 €
```
2° A Mayotte, son montant est fixé à 7,74 € l'heure.
```catala
champ d'application Smic :
définition brut_horaire sous condition
date_courante >= |2021-01-01| et date_courante <= |2021-12-31| et (
(résidence = Mayotte)
)
conséquence égal à 7,74 €
```
## Décret n° 2021-1741 du 22 décembre 2021 portant relèvement du salaire minimum de croissance
### Article 1 | JORFARTI000044546655
A compter du 1er janvier 2022, pour les catégories de travailleurs mentionnés à
l' article L. 2211-1 du code du travail , le montant du salaire minimum de
croissance est relevé dans les conditions ci-après :
1° En métropole, en Guadeloupe, en Guyane, en Martinique, à La Réunion, à
Saint-Barthélemy, à Saint-Martin et à Saint-Pierre-et-Miquelon, son montant est
porté à 10,57 euros l'heure.
```catala
champ d'application Smic :
définition brut_horaire sous condition
date_courante >= |2022-01-01| et date_courante <= |2022-04-30| et (
(résidence = Métropole) ou
(résidence = Guadeloupe) ou
(résidence = Guyane) ou
(résidence = Martinique) ou
(résidence = LaRéunion) ou
(résidence = SaintBarthélemy) ou
(résidence = SaintMartin) ou
(résidence = SaintPierreEtMiquelon)
)
conséquence égal à 10,57 €
```
2° A Mayotte, son montant est fixé à 7,98 euros l'heure.
```catala
champ d'application Smic :
définition brut_horaire sous condition
date_courante >= |2022-01-01| et date_courante <= |2022-04-30| et (
(résidence = Mayotte)
)
conséquence égal à 7,98 €
```
## Arrêté du 19 avril 2022 relatif au relèvement du salaire minimum de croissance
### Article 2 | JORFARTI000045602327
En conséquence, à compter du 1er mai 2022, pour les catégories de travailleurs
mentionnés à l' article L. 2211-1 du code du travail , le montant du salaire
minimum de croissance est relevé dans les conditions ci-après :
1° En métropole, en Guadeloupe, en Guyane, en Martinique, à La Réunion, à
Saint-Barthélemy, à Saint-Martin et à Saint-Pierre-et-Miquelon, son montant
est porté à 10,85 € l'heure ;
```catala
champ d'application Smic :
définition brut_horaire sous condition
date_courante >= |2022-05-01| et date_courante <= |2022-07-31| et (
(résidence = Métropole) ou
(résidence = Guadeloupe) ou
(résidence = Guyane) ou
(résidence = Martinique) ou
(résidence = LaRéunion) ou
(résidence = SaintBarthélemy) ou
(résidence = SaintMartin) ou
(résidence = SaintPierreEtMiquelon)
)
conséquence égal à 10,85 €
```
2° A Mayotte, son montant est fixé à 8,19 € l'heure.
```catala
champ d'application Smic :
définition brut_horaire sous condition
date_courante >= |2022-05-01| et date_courante <= |2022-07-31| et (
(résidence = Mayotte)
)
conséquence égal à 8,19 €
```
## Arrêté du 29 juillet 2022 relatif au relèvement du salaire minimum de croissance
### Article 2 | JORFARTI000046113526
En conséquence, à compter du 1er août 2022, pour les catégories de travailleurs
mentionnés à l' article L. 2211-1 du code du travail , le montant du salaire
minimum de croissance est relevé dans les conditions ci-après :
1° En métropole, en Guadeloupe, en Guyane, en Martinique, à La Réunion,
à Saint-Barthélemy, à Saint-Martin et à Saint-Pierre-et-Miquelon,
son montant est porté à 11,07 € l'heure ;
```catala
champ d'application Smic :
définition brut_horaire sous condition
date_courante >= |2022-08-01| et date_courante <= |2022-12-31| et (
(résidence = Métropole) ou
(résidence = Guadeloupe) ou
(résidence = Guyane) ou
(résidence = Martinique) ou
(résidence = LaRéunion) ou
(résidence = SaintBarthélemy) ou
(résidence = SaintMartin) ou
(résidence = SaintPierreEtMiquelon)
)
conséquence égal à 11,07 €
```
2° A Mayotte, son montant est fixé à 8,35 € l'heure.
```catala
champ d'application Smic :
définition brut_horaire sous condition
date_courante >= |2022-08-01| et date_courante <= |2022-12-31| et (
(résidence = Mayotte)
)
conséquence égal à 8,35 €
```
## Décret n° 2022-1608 du 22 décembre 2022 portant relèvement du salaire minimum de croissance
### Article 1 | JORFARTI000046780051
A compter du 1er janvier 2023, pour les catégories de travailleurs mentionnés à
l' article L. 2211-1 du code du travail , le montant du salaire minimum de
croissance est relevé dans les conditions ci-après :
1° En métropole, en Guadeloupe, en Guyane, en Martinique, à La Réunion,
à Saint-Barthélemy, à Saint-Martin et à Saint-Pierre-et-Miquelon,
son montant est porté à 11,27 euros l'heure ;
```catala
champ d'application Smic :
définition brut_horaire sous condition
date_courante >= |2023-01-01| et date_courante < |2023-05-01| et (
(résidence = Métropole) ou
(résidence = Guadeloupe) ou
(résidence = Guyane) ou
(résidence = Martinique) ou
(résidence = LaRéunion) ou
(résidence = SaintBarthélemy) ou
(résidence = SaintMartin) ou
(résidence = SaintPierreEtMiquelon)
)
conséquence égal à 11,27 €
```
2° A Mayotte, son montant est fixé à 8,51 euros l'heure.
```catala
champ d'application Smic :
définition brut_horaire sous condition
date_courante >= |2023-01-01| et date_courante < |2023-05-01| et (
(résidence = Mayotte)
)
conséquence égal à 8,51 €
```
## Arrêté du 26 avril 2023 relatif au relèvement du salaire minimum de croissance
### Article 2 | JORFARTI000047495827
En conséquence, à compter du 1er mai 2023, pour les catégories de travailleurs
mentionnés à l'article L. 2211-1 du code du travail, le montant du salaire
minimum de croissance est relevé dans les conditions ci-après :
1° En métropole, en Guadeloupe, en Guyane, en Martinique, à La Réunion, à
Saint-Barthélemy, à Saint-Martin et à Saint-Pierre-et-Miquelon, son montant
est porté à 11,52 € l'heure ;
```catala
champ d'application Smic :
définition brut_horaire sous condition
date_courante >= |2023-05-01| et (
(résidence = Métropole) ou
(résidence = Guadeloupe) ou
(résidence = Guyane) ou
(résidence = Martinique) ou
(résidence = LaRéunion) ou
(résidence = SaintBarthélemy) ou
(résidence = SaintMartin) ou
(résidence = SaintPierreEtMiquelon)
)
conséquence égal à 11,52 €
```
2° A Mayotte, son montant est fixé à 8,70 € l'heure.
```catala
champ d'application Smic :
définition brut_horaire sous condition
date_courante >= |2023-05-01| et (
(résidence = Mayotte)
)
conséquence égal à 8,70 €
```

View File

@ -1,14 +0,0 @@
*.aux
*.dvi
*.fdb_latexmk
*.fls
*.log
*.out
*.fls
*.tex
*.pdf
_minted*
*.toc
*.pyg
*.d
*.ml

View File

@ -1,4 +0,0 @@
CATALA_LANG=en
SRC=tutorial_en.catala_en
include ../Makefile.common.mk

View File

@ -1,39 +0,0 @@
> Include: ../tutorial_en.catala_en
## Test
```catala
declaration scope UnitTest1:
tax_computation scope NewIncomeTaxComputation
scope UnitTest1:
definition
tax_computation.individual
equals
Individual {
-- income: $230,000
-- number_of_children: 0
}
assertion tax_computation.income_tax = $72,000
declaration scope UnitTest2:
tax_computation scope NewIncomeTaxComputationFixed
scope UnitTest2:
definition tax_computation.individual equals Individual {
-- income: $4,000
-- number_of_children: 0
}
assertion tax_computation.income_tax = $0.00
```
```catala-test-inline
$ catala Interpret -s UnitTest1 --disable-warnings
[RESULT] Computation successful!
```
```catala-test-inline
$ catala Interpret -s UnitTest2 --disable-warnings
[RESULT] Computation successful!
```

Some files were not shown because too many files have changed in this diff Show More