{# Une version de proposition, partagée par l'écran sourceur et l'écran de l'équipe. Attend `version` (App\Entity\ProposalVersion) et `changes` (résultat de proposal_diff(version), ou {} pour ne rien surligner). Un champ non renseigné s'écrit « à confirmer », jamais 0 ni vide. Rien d'interne ici : ni nom de l'équipe, ni autre sourceur — ce partiel est vu par le sourceur. #} {% set questions = version.proposal.request.openQuestions %} {% set answers = version.answers %} {# Réponses à des questions qui ne sont plus dans la demande : affichées quand même, rien n'est caché. #} {% set extra = answers|keys|filter(key => key not in questions) %}
{% for field, raw in version.values %} {% set changed = changes[field] is defined %}
{{ ('proposal.field.' ~ field)|trans }}
{{ proposal_value(field, raw) }}
{% if changed %}

{{ 'proposal.before'|trans({'%value%': proposal_value(field, changes[field].before)}) }}

{% endif %}
{% endfor %}
{% if questions is not empty or extra is not empty %}

{{ 'proposal.answers'|trans }}

{% for key in questions|merge(extra) %} {% set field = 'answers.' ~ key %} {% set changed = changes[field] is defined %}
{{ sheet_question_topic(key) }}
{{ proposal_value(field, answers[key] ?? null) }}
{% if changed %}

{{ 'proposal.before'|trans({'%value%': proposal_value(field, changes[field].before)}) }}

{% endif %}
{% endfor %}
{% endif %}

{{ 'proposal.attachments'|trans }}

{% if version.attachments is empty %}

{{ 'proposal.no_attachment'|trans }}

{% else %} {% set photos = version.attachments|filter(a => a.photo) %} {% set documents = version.attachments|filter(a => not a.photo) %} {% if photos is not empty %}
{% for attachment in photos %} {% set url = path('app_proposal_attachment', { id: version.proposal.id, attachmentId: attachment.id }) %} {{ attachment.originalName }} {% endfor %}
{% endif %} {% if documents is not empty %} {% endif %} {% endif %}