Version de développement
Cette documentation décrit la version « next » (develop), non encore publiée. Pour la version stable, basculez sur « v5 » dans l'en-tête.
Développeurs
Étendre les lignes des déclarations intra-communautaires (hook france_intra_eu_line_extensions)
Le hook france_intra_eu_line_extensions permet à une application d'ajouter des colonnes aux lignes de calcul des déclarations intra-communautaires françaises (DES, état récapitulatif TVA) ; ces colonnes apparaissent dans le formulaire, dans l'état de contrôle et dans l'export des lignes.
Étendre les lignes des déclarations intra-communautaires
Principe
Une application ajoute des colonnes aux lignes de calcul des déclarations intra-communautaires en déclarant des fonctions dans le hook france_intra_eu_line_extensions de son hooks.py :
# hooks.py de l'application
france_intra_eu_line_extensions = ["mon_app.regional.intra_eu.entrepreneur"]
Chaque entrée est le chemin (dotted path) d'une fonction appelée à chaque préparation de la déclaration, avec la déclaration et ses lignes de calcul.
Signature de l'extension
def entrepreneur(declaration, computation_lines):
return {
"columns": [{"fieldname": "entrepreneur", "label": "Entrepreneur"}],
"values": {
row.source_row: {"entrepreneur": f"ENT {row.source_name}"}
for row in computation_lines
},
}
columns: liste de dictionnaires{"fieldname", "label"}. Silabelest omis, lefieldnameest utilisé comme libellé. La première extension qui déclare unfieldnamele conserve ; les doublons des extensions suivantes sont ignorés.values: dictionnaire indexé par lesource_rowde la ligne de calcul, chaque entrée étant un dictionnairefieldname→ valeur. Seules les valeurs correspondant aux colonnes déclarées sont conservées.
Stockage et cycle de vie
- Les colonnes sont stockées dans le champ
extension_columns(JSON, masqué) de la déclaration « France Intra-EU Declaration ». - Les valeurs sont stockées dans le champ
extension_values(JSON) de chaque ligne de calcul (« France Intra-EU Computation Line »), associées parsource_row. - Les extensions sont exécutées à chaque préparation de la déclaration. Une nouvelle préparation sans l'extension supprime ses colonnes et ses valeurs.
- Une extension qui lève une exception est journalisée (log d'erreur « Intra-EU line extension failed:
», avec la déclaration en référence) et la préparation se poursuit sans elle : la déclaration reste celle de Dokos, les colonnes supplémentaires appartiennent à l'application.
Où les colonnes apparaissent
- Dans le formulaire de la déclaration, sous la ligne de calcul concernée, sous la forme
Label : valeur. - Dans l'état de contrôle, en note de la facture, à la suite de la note de retard ou de régularisation, sous la forme
Label : valeur. - Dans l'export des lignes de calcul (CSV ou Excel), en colonnes supplémentaires ajoutées en fin de fichier.