{% macro action(type,id,action,label,danger=false) %}
{% endmacro %} {% macro status(s) %}{{ s.departedAt ? 'Terminé' : (s.arrivedAt ? 'Présent' : 'Réservé') }}{% endmacro %} {% macro stay(id,s,data) %}{% import _self as ui %}{{ data.dogs[s.dog].name }} ({{ data.dogs[s.dog].breed ?: 'Race non renseignée' }}) {% if not s.arrivedAt %}{{ ui.action('stays',id,'arrival','Confirmer l’arrivée') }} Modifier {{ ui.action('stays',id,'delete','Annuler',true) }}{% elseif not s.departedAt %}{{ ui.action('stays',id,'departure','Confirmer le départ') }} {{ ui.action('stays',id,'undo-arrival','Annuler l’arrivée',true) }}{% else %}{{ ui.action('stays',id,'undo-departure','Annuler le départ',true) }}{% endif %}{% if s.arrivedAt %}Modifier{% endif %} {{ s.start|date('d/m/Y') }}{{ s.startPeriod|capitalize }} {{ s.end|date('d/m/Y') }}{{ s.endPeriod|capitalize }} {{ ui.status(s) }}{% if s.arrivedAt %}Arrivée : {{ s.arrivedAt|date('d/m/Y H:i:s','Europe/Paris') }}{% endif %}{% if s.departedAt %}Départ : {{ s.departedAt|date('d/m/Y H:i:s','Europe/Paris') }}{% endif %} {{ ui.price(data.stayPrices[id],true) }}Prestations ({{ data.stayPrices[id].extrasCount }}) Suivi / documents{{ s.comment ?: '—' }}{% endmacro %} {% macro groupAction(group,action,label,danger=false) %}
{% endmacro %} {% macro groupStay(group,data) %} {% import _self as ui %}{% set s=group.first %}{% set total=group.members|length %} {% if total>1 %}Famille · {{ group.family }}{{ total }} chiens{% endif %}{% for member in group.members %}{{ data.dogs[member.dog].name }} ({{ data.dogs[member.dog].breed ?: 'Race non renseignée' }}){{ not loop.last ? ', ' : '' }}{% endfor %} {% if group.waiting %}{{ ui.groupAction(group,'arrival',total>1 ? 'Confirmer l’arrivée de la famille' : 'Confirmer l’arrivée') }}{% elseif group.present %}{{ ui.groupAction(group,'departure',total>1 ? 'Confirmer le départ de la famille' : 'Confirmer le départ') }}{% endif %} {% if group.done %}{{ ui.groupAction(group,'undo-departure',total>1 ? 'Annuler le départ de la famille' : 'Annuler le départ',true) }}{% elseif group.present %}{{ ui.groupAction(group,'undo-arrival',total>1 ? 'Annuler l’arrivée de la famille' : 'Annuler l’arrivée',true) }}{% endif %} {% if total>1 %}Modifier la réservation familiale{% endif %} {% if total>1 %}
Gérer les chiens séparément{% for memberId,member in group.members %}
{{ data.dogs[member.dog].name }}{% if not member.arrivedAt %} Modifier{{ ui.action('stays',memberId,'delete','Annuler',true) }}{% else %}Modifier {{ ui.status(member) }}{% if member.departedAt %}{{ ui.action('stays',memberId,'undo-departure','Annuler le départ',true) }}{% else %}{{ ui.action('stays',memberId,'undo-arrival','Annuler l’arrivée',true) }}{% endif %}{% endif %}
{% endfor %}
{% elseif not s.arrivedAt %}Modifier{{ ui.action('stays',group.id,'delete','Annuler',true) }}{% endif %}{% if total==1 and s.arrivedAt %}Modifier{% endif %} {{ s.start|date('d/m/Y') }}{{ s.startPeriod|capitalize }} {{ s.end|date('d/m/Y') }}{{ s.endPeriod|capitalize }} {% if group.done==total %}Terminé{% elseif group.present==total %}Présent{{ total>1 ? 's' : '' }}{% elseif group.waiting==total %}Réservé{% else %}Présence partielle{{ group.present }} présents · {{ group.waiting }} attendus · {{ group.done }} partis{% endif %} {% for member in group.members %}{% if member.arrivedAt or member.departedAt %}{% if total>1 %}{{ data.dogs[member.dog].name }}{% endif %}{% if member.arrivedAt %}Arrivée : {{ member.arrivedAt|date('d/m/Y H:i:s','Europe/Paris') }}{% endif %}{% if member.departedAt %}Départ : {{ member.departedAt|date('d/m/Y H:i:s','Europe/Paris') }}{% endif %}{% endif %}{% endfor %} {{ ui.price(group.price) }}Prestations ({{ group.price.extrasCount }}) {% for memberId,member in group.members %}Suivi de {{ data.dogs[member.dog].name }}{% endfor %}{% set comments=[] %}{% for member in group.members %}{% if member.comment not in comments %}{% set comments=comments|merge([member.comment]) %}{% endif %}{% endfor %}{% if comments|length==1 %}{{ comments[0] ?: '—' }}{% else %}{% for member in group.members %}{{ data.dogs[member.dog].name }} : {{ member.comment ?: '—' }}{% endfor %}{% endif %} {% endmacro %} {% macro price(quote,individual=false) %} {% if quote.grandTotalCents is not null %}{{ (quote.grandTotalCents/100)|number_format(2,',',' ') }} €{{ quote.days|number_format(quote.halfDays is odd ? 1 : 0,',',' ') }} jour(s) × {{ (quote.dailyCents/100)|number_format(2,',',' ') }} €/jour{% if quote.extrasCount %}Pension : {{ (quote.totalCents/100)|number_format(2,',',' ') }} €Prestations : + {{ (quote.extrasTotalCents/100)|number_format(2,',',' ') }} €{% endif %}{% if individual and quote.dogCount>1 %}Total pour la famille de {{ quote.dogCount }} chiens{% endif %}{% else %}Tarif à renseigner{{ quote.dogCount }} chien(s) · {{ quote.days|number_format(quote.halfDays is odd ? 1 : 0,',',' ') }} jour(s){% if quote.extrasCount %}Prestations : {{ (quote.extrasTotalCents/100)|number_format(2,',',' ') }} €Total incomplet : tarif de pension manquant.{% endif %}{% endif %} {% endmacro %}