Files

195 lines
8.9 KiB
HTML

{{* -*- brindille -*- *}}
{{#restrict block=true section="accounting" level="write"}}{{/restrict}}
{{*
Afficher les détails d'une réservation et donner la possibilité :
- d'accepter, de refuser ou d'archiver
paramètres :
- key : clé du mouvement
- prop = 1 si matériel appartient à l'asso
- from = page d'appel
*}}
{{* Traiter l'envoi du formulaire (associer une résa à un membre) *}}
{{#form on="save"}}
{{* Récupérer les infos de la réservation depuis le module web uniquement *}}
{{#load module=web key=$_POST.key assign="resa"}}
{{else}}
{{:error message="Aucune réservation avec la clé %s"|args:$_POST.key}}
{{/load}}
{{#foreach from=$_POST.user key="id" item="name"}}
{{:assign var="user.id" value=$id}}
{{:assign var="user.name" value=$name}}
{{/foreach}}
{{* Enregistrer la réservation dans le module equipment *}}
{{:save assign_new_id="rid"
key=$_POST.key
validate_schema="../reservation.schema.json"
type="reservation"
member=$user.id|intval|or:null
name=$resa.name|trim
contact=$resa.contact|trim
email=$resa.email|trim
address=$resa.address|trim|or:null
equipment=$_POST.equipment_key|trim
date=$resa.date|date_short|parse_date
loan_date=$resa.loan_date|parse_date
return_date=$resa.return_date|parse_date
amount=$resa.amount|intval
comment=$resa.comment|trim|or:null
secret=$resa.secret|trim|or:null
status=$resa.status|trim|or:null
}}
{{:redirect force="resa_details.html?ok=1&msg=modification&key=%s"|args:$_POST.key}}
{{/form}}
{{:admin_header title="Détails d'une réservation" custom_css="../style.css" current="module_%s"|args:$module.name}}
{{:form_errors}}
{{:include file="../_nav.html" current="réservation" subcurrent="encours"}}
<div class="shortFormLeft">
<p class="help">Détails d'une réservation</p>
<p class="help">Légende : <br/>
{{:icon shape="globe"}} : réservation issue de la page publique<br/>
{{:icon shape="print"}} : réservation issue de la page membre<br/>
{{:icon shape="alert"}} : signature du contrat requise lors du retrait du matériel
</p>
</div>
{{* récupérer les infos de la réservation depuis le module equipement (prioritaire) ou depuis le module web *}}
{{#load key=$_GET.key assign="resa"}}
{{:assign var="resa.source" value="print"}}
{{* Calcul du nb de jours sortis restant *}}
{{if $resa.return_date != null}}
{{:assign ts_retour=$resa.return_date|strtotime}}
{{:assign nb_jours="floor((%d-%d)/(60*60*24))"|math:$now:$ts_retour}}
{{/if}}
{{else}}
{{#load module=web key=$_GET.key assign="resa"}}
{{:assign var="resa.source" value="globe"}}
{{else}}
{{:error message="Aucune réservation avec la clé %s"|args:$_GET.key}}
{{/load}}
{{/load}}
{{* récupérer les autres infos (équipement/catégorie) associées à cette réservation *}}
{{#load key=$resa.equipment assign="equipment"}}
{{else}}
{{:error message="Aucun matériel avec la clé « %s »"|args:$resa.equipment}}
{{/load}}
{{#load key=$equipment.category assign="category"}}{{/load}}
{{* récupérer le status de la réservation dans le module equipment *}}
{{#load key=$resa.key assign="equipment_resa"}}{{/load}}
{{*:debug resa=$resa*}}
{{*
-------------------- Afficher les informations de la réservation --------------------
*}}
{{if !$resa.member}}
<div class="shortFormLeft">
<p class="alert">{{:icon shape="alert"}} Vous devez sélectionner ou créer un membre avant de pouvoir traiter cette réservation</p>
</div>
{{/if}}
<nav class="tabs">
<aside>
{{if $equipment_resa.status == null }}
{{* réservation non trouvée dans le module equipment*}}
{{:assign var="equipment_resa.status" value="%s"|args:$resa.status}}
{{/if}}
{{if $equipment_resa.status == "acceptée" || $equipment_resa.status == "en cours" || $equipment_resa.status == "refusée"}}
{{* Ne pas permettre d'archiver des réservations au status acceptée/en cours/refusée si la date n'est pas passée et le retour non effectué *}}
{{if $resa.return_date|parse_date < $now|date:'Y-m-d' && !$resa.mvt_key}}
{{:linkbutton label="Archiver cette réservation" href="archive_reservation.html?key=%s&eid=%d"|args:$_GET.key:$equipment.id shape="lock" target="_dialog"}}
{{/if}}
{{if $equipment_resa.status == "acceptée"}}
{{if $resa.signed}}
{{:linkbutton label="Retrait du matériel" href="../movements/output_equipment.html?key=%s&reskey=%s"|args:$equipment.key:$resa.key shape="export" target="_dialog"}}
{{else}}
{{:linkbutton label="Signer le contrat puis retrait du matériel" href="./resa_contract.html?rid=%s"|args:$resa.id shape="export" target="_dialog"}}
{{/if}}
{{elseif $equipment_resa.status == "en cours"}}
{{* TODO : check input_return vs output_return *}}
{{:linkbutton label="Retour du matériel" href="../movements/output_return.html?key=%s&reskey=%s"|args:$resa.mvt_key:$resa.key shape="import" target="_dialog"}}
{{:linkbutton label="Mouvements du matériel" href="../equipment_history.html?key=%s&reskey=%s"|args:$equipment.key:$resa.key shape="table"}}
{{/if}}
{{elseif $equipment_resa.status == "archivée"}}
{{* Ne rien faire dans ce cas *}}
{{else}}
{{* Si la date est périmée, ne permettre que d'archiver cette réservation *}}
{{if $resa.loan_date|parse_date > $now|date:'Y-m-d' }}
{{if $resa.member >= 1}}
{{:linkbutton label="Accepter cette réservation" href="accept_reservation.html?key=%s&eid=%d"|args:$_GET.key:$equipment.id shape="edit" target="_dialog"}}
{{:linkbutton label="Refuser cette réservation" href="decline_reservation.html?key=%s&eid=%d"|args:$_GET.key:$equipment.id shape="delete" target="_dialog"}}
{{*:linkbutton label="Archiver cette réservation" href="archive_reservation.html?key=%s&eid=%d"|args:$_GET.key:$equipment.id shape="lock" target="_dialog"*}}
{{/if}}
{{else}}
{{:assign var="equipment_resa.status" value="périmée"}}
{{:linkbutton label="Archiver cette réservation" href="archive_reservation.html?key=%s&eid=%d"|args:$_GET.key:$equipment.id shape="lock" target="_dialog"}}
{{/if}}
{{/if}}
{{:linkbutton label="Corriger" href="temp_correction.html?key=%s"|args:$_GET.key shape="plus" target="_dialog"}}
</aside>
</nav>
<dl class="describe">
<dt>Source</dt><dd>{{:icon shape="%s"|args:$resa.source}}</dd>
<dt>Status</dt>
{{:include file="../_resa_status_color.html" status='%s'|args:$equipment_resa.status|or:null}}
<dt>Nom</dt><dd>{{$resa.name}}</dd>
<dt>Contact</dt><dd>{{$resa.contact}}</dd>
<dt>Courriel</dt><dd>{{$resa.email}}</dd>
<dt>Adresse postale</dt><dd>{{$resa.address}}</dd>
<dt>Matériel</dt><dd>{{:link href="../equipment_history.html?key=%s&prop=%s"|args:$equipment.key:$_GET.prop label=$equipment.name}}</dd>
<dt>Catégorie</dt><dd>{{:link href="../index.html?cat_key=%s&prop=1"|args:$category.key label=$category.name}}</dd>
<dt>Date de la demande</dt><dd>{{$resa.date|date_short}}</dd>
<dt>Quantité</dt><dd>{{$resa.amount}}</dd>
<dt>Membre associé</dt>
<dd>{{if $resa.member >= 1}}
{{:link href="/admin/users/details.php?id=%s"|args:$resa.member label="Voir la fiche de %s"|args:$resa.name target="_dialog"}}
{{else}}
<form method="post" action="">
{{:input name="key" type="hidden" default=$resa.key}}
{{:input name="equipment_key" type="hidden" default=$equipment.key}}
{{:input type="list" name="user" required=true target="!users/selector.php" multiple=false can_delete=true help="Associer cette réservation à un membre"}}
{{:button type="submit" name="save" label="Enregistrer" shape="right" class="main"}}
</form>
{{:linkbutton href="!users/new.php" label="Créer un nouveau membre" target="_dialog" shape="plus"}}
{{/if}}
</dd>
<dt>Date souhaitée</dt><dd>
{{$resa.loan_date|date_short}}
{{if $resa.loan_date|parse_date == $now|date:'Y-m-d'}}
{{:tag color="darkgreen" label="À retirer aujourd'hui"}}
{{/if}}
</dd>
<dt>Retour prévu/réel</dt><dd>
{{$resa.return_date|date_short}}
{{:assign jour="jour"}}
{{if $equipment_resa.status == "en cours"}}
{{if $nb_jours > 0}}
{{if $nb_jours > 1}}{{:assign jour="jours"}}{{/if}}
{{:tag color="darkred" label="Retard %s %s"|args:$nb_jours:$jour}}
{{elseif $nb_jours < 0}}
{{:assign delai="abs(%d)"|math:$nb_jours}}
{{if $nb_jours < -1}}{{:assign jour="jours"}}{{/if}}
{{:tag color="lightgreen" label="Reste %s %s"|args:$delai:$jour}}
{{else}}
{{:tag color="darkgreen" label="À rendre aujourd'hui"}}
{{/if}}
{{/if}}
</dd>
<dt>Signature contrat</dt><dd>{{if $resa.signed != null}}{{$resa.signed}}{{else}}{{:icon shape="alert"}} À faire au retrait!{{/if}}</dd>
<dt>Remarques</dt>
<dd>{{if $resa.comment != null}}{{$resa.comment}}{{else}}—{{/if}}</dd>
</dl>
{{if $_GET.output_type}}
{{:linkbutton href="../resa_history.html?output_type=%s"|args:$_GET.output_type label="Retour" shape="home"}}
{{else}}
{{:linkbutton href="../resa_history.html?output_type=resa" label="Retour" shape="home"}}
{{/if}}
{{* Fichiers liés à l'équipement *}}
{{:assign var="path" value="public/image-%s"|args:$equipment.key}}
{{:admin_files path=$path upload=false edit=false use_trash=false}}
{{:admin_footer}}