diff --git a/mon-entreprise/source/components/conversation/RuleInput.tsx b/mon-entreprise/source/components/conversation/RuleInput.tsx
index f4f17e961..dcd119335 100644
--- a/mon-entreprise/source/components/conversation/RuleInput.tsx
+++ b/mon-entreprise/source/components/conversation/RuleInput.tsx
@@ -1,6 +1,6 @@
import Input from 'Components/conversation/Input'
import Question from 'Components/conversation/Question'
-import SelectGéo from 'Components/conversation/select/SelectGeo'
+import SelectCommune from 'Components/conversation/select/SelectCommune'
import SelectAtmp from 'Components/conversation/select/SelectTauxRisque'
import CurrencyInput from 'Components/CurrencyInput/CurrencyInput'
import PercentageField from 'Components/PercentageField'
@@ -66,9 +66,9 @@ export default function RuleInput({
/>
)
}
- if (rule.API && rule.API === 'géo')
- return
- if (rule.API) throw new Error("Le seul API implémenté est l'API géo")
+ if (rule.API && rule.API === 'commune')
+ return
+ if (rule.API) throw new Error("Les seules API implémentées sont 'commune'")
if (rule.dottedName == 'contrat salarié . ATMP . taux collectif ATMP')
return
diff --git a/mon-entreprise/source/components/conversation/select/SelectGeo.js b/mon-entreprise/source/components/conversation/select/SelectCommune.js
similarity index 81%
rename from mon-entreprise/source/components/conversation/select/SelectGeo.js
rename to mon-entreprise/source/components/conversation/select/SelectCommune.js
index 62425dc38..2455c73b6 100644
--- a/mon-entreprise/source/components/conversation/select/SelectGeo.js
+++ b/mon-entreprise/source/components/conversation/select/SelectCommune.js
@@ -14,20 +14,30 @@ async function tauxVersementTransport(codeCommune) {
const json = await response.json()
return json
}
-
+function formatCommune(value) {
+ return value && `${value.nom} (${value.codePostal})`
+}
async function searchCommunes(input) {
+ const number = input.match(/[\d]+/)?.join('') ?? ''
+ const text = input.match(/[^\d]+/)?.join(' ') ?? ''
const response = await fetch(
- `https://geo.api.gouv.fr/communes?nom=${input}&fields=nom,code,departement,region&boost=population`
+ `https://geo.api.gouv.fr/communes?fields=nom,code,departement,region,codesPostaux${
+ text ? `&nom=${text}` : ''
+ }${number.match(/[\d]{5}/) ? `&codePostal=${number}` : ''}&boost=population`
)
if (!response.ok) {
return null
}
const json = await response.json()
- return json
+ return json.flatMap(({ codesPostaux, ...commune }) =>
+ codesPostaux
+ .map(codePostal => ({ ...commune, codePostal }))
+ .filter(({ codePostal }) => codePostal.includes(number))
+ )
}
export default function Select({ onChange, onSubmit, value }) {
- const [name, setName] = useState(value?.nom)
+ const [name, setName] = useState(formatCommune(value))
const [searchResults, setSearchResults] = useState()
const [isLoading, setLoadingState] = useState(false)
@@ -67,7 +77,7 @@ export default function Select({ onChange, onSubmit, value }) {
.finally(() => {
onSubmit() // eslint-disable-line no-console
setSearchResults(null)
- setName(option.nom)
+ setName(formatCommune(option))
})
}
const noResult = !isLoading && searchResults && searchResults.length === 0
@@ -105,11 +115,11 @@ export default function Select({ onChange, onSubmit, value }) {
{searchResults &&
searchResults.map(result => {
- const { nom, departement } = result
+ const nom = formatCommune(result)
return (
)
})}
diff --git a/mon-entreprise/source/locales/rules-en.yaml b/mon-entreprise/source/locales/rules-en.yaml
index 5fe6d094d..8dccba54c 100644
--- a/mon-entreprise/source/locales/rules-en.yaml
+++ b/mon-entreprise/source/locales/rules-en.yaml
@@ -2233,7 +2233,7 @@ contrat salarié . lodeom . secteurs d'activité:
titre.fr: secteurs d'activité
contrat salarié . lodeom . zone un:
titre.en: Geographical area 1 (Guadeloupe, Martinique, Reunion Island, French Guiana)
- titre.fr: Zone géographique 1 (Guadeloupe, Martinique, La Réunion, Guyane)
+ titre.fr: Zone communegraphique 1 (Guadeloupe, Martinique, La Réunion, Guyane)
contrat salarié . lodeom . écart au plafond de l'assiette:
titre.en: deviation from the base ceiling
titre.fr: écart au plafond de l'assiette
@@ -4808,10 +4808,10 @@ entreprise . rattachée à la CIPAV:
Les auto-entrepreneurs exerçant une activité de profession libérale
règlementée sont affiliés pour leur assurance retraite à la Cipav. Ces
professions libérales règlementées sont : architectes, architectes
- d’intérieur, économistes de la construction, géomètres, ingénieurs-conseils,
- maîtres d’oeuvre, psychologues, psychothérapeutes, ostéopathes,
- ergothérapeutes, chiropracteurs, diététiciens, artistes autres que les
- artistes-auteurs, experts devant les tribunaux, experts automobiles,
+ d’intérieur, économistes de la construction, communemètres,
+ ingénieurs-conseils, maîtres d’oeuvre, psychologues, psychothérapeutes,
+ ostéopathes, ergothérapeutes, chiropracteurs, diététiciens, artistes autres
+ que les artistes-auteurs, experts devant les tribunaux, experts automobiles,
mandataires judiciaires à la protection des majeurs, courtiers en valeur,
guides-conférenciers, guides de haute montagne, accompagnateurs de moyenne
montagne et moniteurs de ski.
diff --git a/mon-entreprise/source/rules/entreprise-établissement.yaml b/mon-entreprise/source/rules/entreprise-établissement.yaml
index 082510015..f0c03c556 100644
--- a/mon-entreprise/source/rules/entreprise-établissement.yaml
+++ b/mon-entreprise/source/rules/entreprise-établissement.yaml
@@ -481,7 +481,7 @@ entreprise . auto entreprise impossible:
Lorsqu'une entreprise dispose de plusieurs établissements, certaines cotisations sont
calculées à l'échelle de l'établissement et sont fonction de règlementations locales.
question: Dans quelle commune l'établissement est-il implanté ?
- API: géo
+ API: commune
par défaut:
code: 29019
nom: Non renseignée
diff --git a/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/FormPDF.tsx b/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/FormPDF.tsx
index 7b3c025fd..26382d370 100644
--- a/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/FormPDF.tsx
+++ b/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/FormPDF.tsx
@@ -75,10 +75,22 @@ function FormPDF({ fields, title, description }) {
{fields.map(field => (
{field.type === 'groupe' ? (
- {field.title}
+ <>
+
+ {field.title}{' '}
+ {field.note && (
+ ({field.note})
+ )}
+
+ >
) : (
<>
- {field.question ?? field.title}
+
+ {field.question ?? field.title}{' '}
+ {field.note && (
+ ({field.note})
+ )}
+
{field.nodeValue != null && (
{formatValue(field)}
)}
@@ -108,6 +120,9 @@ const styles = StyleSheet.create({
paddingBottom: 65,
paddingHorizontal: 35
},
+ fieldNumber: {
+ opacity: 0.7
+ },
title: {
fontSize: 20,
marginBottom: 20,
diff --git a/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/formulaire-détachement.yaml b/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/formulaire-détachement.yaml
index 4979052af..971685a8d 100644
--- a/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/formulaire-détachement.yaml
+++ b/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/formulaire-détachement.yaml
@@ -2,18 +2,25 @@ coordonnées assuré:
titre: Vos coordonnées
type: groupe
formule: oui
+ note: 1
coordonnées assuré . nom:
type: texte
+ note: 1.2
coordonnées assuré . prénoms:
type: texte
+ note: 1.3
coordonnées assuré . nationalité:
type: texte
+ note: 1.6
coordonnées assuré . date de naissance:
type: date
+ note: 1.5
coordonnées assuré . commune de naissance:
- API: géo
+ API: commune
+ note: 1.7
coordonnées assuré . numéro de sécurité sociale:
type: texte
+ note: 1.1
coordonnées assuré . organisme urssaf:
type: texte
description: >
@@ -22,24 +29,32 @@ coordonnées assuré . organisme urssaf:
coordonnées assuré . domicile personnel:
type: groupe
formule: oui
+ note: 1.8
coordonnées assuré . domicile personnel . adresse:
type: texte
+ note: 1.9.1
coordonnées assuré . domicile personnel . commune:
- API: géo
+ API: commune
+ note: 1.9.2 / 1.9.3
activité france:
+ note: 4 / 4.1.2
type: groupe
formule: oui
titre: Votre activité indépendante en France
activité france . SIREN:
+ note: 4.2
type: texte
activité france . nom:
+ note: 4.3
titre: Nom de l'entreprise
type: texte
activité france . adresse:
+ note: 4.4.1
type: texte
activité france . commune:
- API: géo
+ API: commune
+ note:: 4.4.3 / 4.4.4
demande:
question: Quelle demande souhaitez-vous effectuer ?
@@ -51,6 +66,7 @@ demande:
- activité transfrontalière simultanée
demande . détachement:
+ note: 3.3
type: groupe
formule: oui
applicable si: demande = 'détachement'
@@ -100,6 +116,7 @@ demande . détachement . période . date de fin:
type: date
demande . activité transfrontalière simultanée:
+ note: 3.4
applicable si: demande = 'activité transfrontalière simultanée'
type: groupe
formule: oui
diff --git a/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/index.tsx b/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/index.tsx
index 8cd2f124a..7e0c1eb77 100644
--- a/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/index.tsx
+++ b/mon-entreprise/source/sites/mon-entreprise.fr/pages/Gérer/DétachementIndépendant/index.tsx
@@ -37,7 +37,7 @@ const useFields = (engine: Engine, fieldNames: Array) => {
return fields
}
-const VERSION = hash(JSON.stringify(Object.keys(formulaire)))
+const VERSION = hash(JSON.stringify(formulaire))
function FormulairePublicodes({ engine }) {
const [situation, setSituation] = usePersistingState(
`formulaire-détachement:${VERSION}`,
diff --git a/publicodes/docs/mecanisms.yaml b/publicodes/docs/mecanisms.yaml
index c06533ad0..1509a7ee6 100644
--- a/publicodes/docs/mecanisms.yaml
+++ b/publicodes/docs/mecanisms.yaml
@@ -488,7 +488,7 @@ synchronisation:
description: Pour éviter trop de saisies à l'utilisateur, certaines informations sont
récupérées à partir de ce que l'on appelle des API. Ce sont des services
auxquels ont fait appel pour obtenir des informations sur un sujet précis.
- Par exemple, l'État français fournit gratuitement l'API géo, qui permet à
+ Par exemple, l'État français fournit gratuitement l'API commune, qui permet à
partir du nom d'une ville, d'obtenir son code postal, son département, la
population etc.