Add signalement (flag) tags for problem lines on /lignes

New field_flag: free-tagging taxonomy reference (multi-value,
auto-create) on ligne_comptable, for marking a line with an
unstructured problem description (e.g. "client impayé") that can't be
detected automatically the way the répartition écart already is.

- New "Signalement" column, inline-editable like Client/Facture/Libellé
  (comma-separated tags, datalist autocomplete, server-side auto-create
  of unknown tags -- same pattern LedgerActionsController already used
  for Client, now shared via findOrCreateTerm()).
- New "Signalées uniquement" filter, mirroring "Écarts uniquement".
- Flagged rows get a distinct amber left-edge accent (box-shadow, not
  border) so a row that's both in écart and signalée shows both
  indicators without one overwriting the other.
- Native node add/edit form gets the field for free via core's
  entity_reference_autocomplete_tags widget.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-06 14:55:46 +02:00
co-authored by Claude Sonnet 5
parent ceaf301bf0
commit 34b1082991
10 changed files with 284 additions and 46 deletions
@@ -6,6 +6,7 @@ dependencies:
- field.field.node.ligne_comptable.field_client
- field.field.node.ligne_comptable.field_date_ligne
- field.field.node.ligne_comptable.field_entree_liee
- field.field.node.ligne_comptable.field_flag
- field.field.node.ligne_comptable.field_montant_ht
- field.field.node.ligne_comptable.field_montant_ttc
- field.field.node.ligne_comptable.field_notes
@@ -54,6 +55,16 @@ content:
size: 60
placeholder: ''
third_party_settings: { }
field_flag:
type: entity_reference_autocomplete_tags
weight: 8
region: content
settings:
match_operator: CONTAINS
match_limit: 10
size: 60
placeholder: ''
third_party_settings: { }
field_montant_ht:
type: number
weight: 3
@@ -6,6 +6,7 @@ dependencies:
- field.field.node.ligne_comptable.field_client
- field.field.node.ligne_comptable.field_date_ligne
- field.field.node.ligne_comptable.field_entree_liee
- field.field.node.ligne_comptable.field_flag
- field.field.node.ligne_comptable.field_montant_ht
- field.field.node.ligne_comptable.field_montant_ttc
- field.field.node.ligne_comptable.field_notes
@@ -48,6 +49,14 @@ content:
third_party_settings: { }
weight: 2
region: content
field_flag:
type: entity_reference_label
label: above
settings:
link: true
third_party_settings: { }
weight: 8
region: content
field_montant_ht:
type: number_decimal
label: above
@@ -0,0 +1,25 @@
uuid: c89c4d76-167a-4b60-b5f1-50aa3b349b80
langcode: en
status: true
dependencies:
config:
- field.storage.node.field_flag
- node.type.ligne_comptable
- taxonomy.vocabulary.flag
id: node.ligne_comptable.field_flag
field_name: field_flag
entity_type: node
bundle: ligne_comptable
label: Signalement
description: ''
required: false
translatable: true
default_value: { }
default_value_callback: ''
settings:
handler: 'default:taxonomy_term'
handler_settings:
target_bundles:
flag: flag
auto_create: true
field_type: entity_reference
@@ -0,0 +1,20 @@
uuid: 0921a265-d874-487c-bf0a-09a389322d6b
langcode: en
status: true
dependencies:
module:
- node
- taxonomy
id: node.field_flag
field_name: field_flag
entity_type: node
type: entity_reference
settings:
target_type: taxonomy_term
module: core
locked: false
cardinality: -1
translatable: true
indexes: { }
persist_with_no_fields: false
custom_storage: false
+9
View File
@@ -0,0 +1,9 @@
uuid: 01c508f8-ba10-40d7-8d8b-5c2c362bd761
langcode: en
status: true
dependencies: { }
name: Signalement
vid: flag
description: null
weight: 0
new_revision: false